好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:
http://bitar.cn
package com.pic;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.imageio.ImageIO;
/**
* 纯java处理图片拼接(背景上边添加文字和图片)
* @author Administrator
*
*/
public class JoinMutiImage {
private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) throws IOException {
JoinMutiImage.makePicture();
}
private static void drawImage(int x,int y,BufferedImage ImageNew,BufferedImage ImageOne) throws IOException{
int width = ImageOne.getWidth();//图片宽度
int height = ImageOne.getHeight();//图片高度
int[] ImageArrayTop = new int[width*height];
ImageArrayTop = ImageOne.getRGB(0,0,width,height,ImageArrayTop,0,width);
ImageNew.setRGB(x,y,width,height,ImageArrayTop,0,width);//设置头部的RGB
}
public static byte[] makePicture() throws IOException{
// String imagePath = ImageUtil.class.getResource("/").getPath();
// System.out.println(imagePath);
// int idx1 = imagePath.indexOf("WEB-INF");
// imagePath = imagePath.substring(0, idx1).concat("images/shopping_basket/");
String imagePath = "";
File image_1_top = new File(imagePath.concat("food-cart---save---product_01.png"));
File image_2_food = new File(imagePath.concat("food-cart---save---product_01-02.png"));
File image_3_shadow = new File(imagePath.concat("food-cart---save---product_01-03.png"));
File image_4_space = new File(imagePath.concat("food-cart---save---product_05.png"));
File image_5_code = new File(imagePath.concat("food-cart---save---product_06.png"));
BufferedImage bf_image_1_top =ImageIO.read(image_1_top);
BufferedImage bf_image_2_food =ImageIO.read(image_2_food);
BufferedImage bf_image_3_shadow =ImageIO.read(image_3_shadow);
BufferedImage bf_image_4_space =ImageIO.read(image_4_space);
BufferedImage bf_image_5_code =ImageIO.read(image_5_code);
int width = bf_image_1_top.getWidth();
int heightTotal = 1+1+1;//根据多个内容求和算总高度
BufferedImage ImageNew = new BufferedImage(width,heightTotal,BufferedImage.TYPE_INT_RGB);
int currentY = 0;
//第一个图拼接
drawImage(0,0,ImageNew,bf_image_1_top);
currentY+=bf_image_1_top.getHeight();
//第二个图拼接
// for (int i = 0; i < 集合.size(); i++) {
// drawProduct(0,currentY,ImageNew,bf_image_2_food,foods.get(i));
// currentY+=bf_image_2_food.getHeight();
// }
Graphics g = ImageNew.getGraphics();
Font f2 = new Font("",Font.BOLD,12);
g.setFont(f2);
g.drawString(format.format(new Date()),width-130,heightTotal-30);
g.dispose();
//File outFile = new File(outFilePath);
//ImageIO.write(ImageNew, "png", outFile);//写图片
//
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
ImageIO.write(ImageNew, "JPEG", jpegOutputStream);
byte[] captchaChallengeAsJpeg = null;
captchaChallengeAsJpeg = jpegOutputStream.toByteArray();
jpegOutputStream.close();
//InputStream is = new ByteArrayInputStream(captchaChallengeAsJpeg);
//return is;
return captchaChallengeAsJpeg;
//
}
// private static void drawTop(int x,int y,BufferedImage ImageNew,BufferedImage ImageOne) throws IOException{
// int width = ImageOne.getWidth();//图片宽度
// int height = ImageOne.getHeight();//图片高度
// int[] ImageArrayTop = new int[width*height];
// ImageArrayTop = ImageOne.getRGB(0,0,width,height,ImageArrayTop,0,width);
// ImageNew.setRGB(x,y,width,height,ImageArrayTop,0,width);//设置头部的RGB
// }
private static void drawProduct(int x,int y,BufferedImage ImageNew,BufferedImage ImageTwo) throws IOException{
int widthTwo = ImageTwo.getWidth();//图片高度
int heightTwo = ImageTwo.getHeight();//图片高度
int[] ImageArrayTwo = new int[widthTwo*heightTwo];
ImageArrayTwo = ImageTwo.getRGB(0,0,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);
ImageNew.setRGB(x,y,widthTwo,heightTwo,ImageArrayTwo,0,widthTwo);
URL url = new URL("图片");
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
BufferedImage ImagePuduct = ImageIO.read(inStream);
int widthPuduct = ImagePuduct.getWidth();
int heightPuduct = ImagePuduct.getHeight();//图片高度
Image image=ImagePuduct.getScaledInstance(100,80,Image.SCALE_DEFAULT);//获取缩略图
/*再创建一个BufferedImage对象 用于创建100*100大小的图像*/
BufferedImage oimage;
oimage = new BufferedImage(100,80,Image.SCALE_DEFAULT);
/*获取图像上下文对象,然后把刚才的Image对象画到BufferedImage中去
切忌, drawImage()方法有很多重载方法,一定要选用下面的这个,它会95%的复制原图的图片质量。其他重载方法你也可以试试,可能生成出来的图片很丑噢~哈哈
*/
oimage.getGraphics().drawImage(image,0,0, null);
widthPuduct = 100;
heightPuduct = 80;
int[] ImageArrayPuduct = new int[widthPuduct*heightPuduct];
ImageArrayPuduct = oimage.getRGB(0,0,widthPuduct,heightPuduct,ImageArrayPuduct,0,widthPuduct);
ImageNew.setRGB(60,y+20,widthPuduct,heightPuduct,ImageArrayPuduct,0,widthPuduct);
drawProductText(x,y,widthPuduct,heightPuduct,ImageNew);
}
private static void drawProductText(int x,int y,int widthProduct,int heightProduct,BufferedImage ImageNew){
Graphics g = ImageNew.getGraphics();
Font f = new Font("",Font.BOLD,24);
g.setColor(Color.decode("#333"));
g.setFont(f);
g.drawString("内容",x+60+widthProduct+20,y+40);
f = new Font("",Font.BOLD,18);
g.setFont(f);
g.setColor(Color.decode("#F4CAC9"));
g.drawString("内容",60+widthProduct+59,y+20+20+32);
//
g.dispose();
}
/*
private static void drawBottom(int x,int y,BufferedImage ImageNew,BufferedImage ImageBottom) throws IOException{
int width = ImageBottom.getWidth();//图片高度
int heightBottom = ImageBottom.getHeight();//图片高度
int[] ImageArrayBottom = new int[width*heightBottom];
// Graphics g = ImageNew.getGraphics();
// int xx =10;
// int yy =10;
// Font f2 = new Font("",Font.BOLD,12);
// g.setFont(f2);
// g.drawString(format.format(new Date()),xx,yy);
// g.dispose();
ImageArrayBottom = ImageBottom.getRGB(0,0,width,heightBottom,ImageArrayBottom,0,width);
ImageNew.setRGB(x,y,width,heightBottom,ImageArrayBottom,0,width);
}
*/
}
分享到:
相关推荐
源码中有说明文档,按照文档...源码中包括有视频合成,视频加背景音乐,多图片+音频合并为视频,音频合并,视频加字幕,视频去声音,视频格式转换,视频播放,视频裁剪,获取音频或视频信息,定义视频大小,视频截图
第1章 Java概述、安装及简易教学 14 1-1 Java概述 14 1-2 Java安装 16 1-3 Eclipse安装 18 1-4 GUI设计工具WindowBuilder 18 1-5 在Eclipse开发第一个Java程式 23 1-6 在Eclipse开发第一个Java视窗程式-显示影像 26 ...
在本例中,程序通过调用此方法获取了图片数量、图片名称和图片路径等参数,并利用这些参数完成了图片的加载和显示。 综上所述,这段Java代码展示了如何实现一个简单的电子相册Applet程序,包括了基本的界面设计、...
5. **颜色变化**:每次刷新验证码图片时,可以改变背景色和文字颜色,这可以通过生成新的随机颜色来实现。 6. **响应HTTP请求**:当用户请求验证码图片时,Servlet会接收到HTTP请求,然后根据上述步骤生成验证码...
- **图像水印**:在图片上添加文字或图像水印。 - **图像裁剪与缩放**:在合并前先对原始图片进行处理,适应目标尺寸。 - **滤镜效果**:合并前或合并后应用滤镜,改变整体色调或风格。 通过理解以上知识点并...
在本示例中,我们看到一个使用Java Servlet和图形库来生成图片验证码的简单实现。 首先,我们创建了一个名为`ImageServlet`的类,它继承自`HttpServlet`。`HttpServlet`是处理HTTP请求的基础类,提供了`doGet`和`...
在Java中,OpenCV提供了`opencv-320.jar`这样的库文件,使得开发者能够轻松地在Java程序中集成计算机视觉功能,比如添加水印、图片合成和图片切割等操作。 1. **添加水印**: 在图像处理中,水印通常用于标识...
2. **1万符号ok.ttf**:这是一款字体文件,其中包含了一万个字符,可能用于在拼接过程中添加文字或图标,比如在每张图片上添加编号或标签。 3. **说明.txt**:这是可能包含关于如何使用代码或软件的说明文档,用户...
在许多场景下,我们不仅需要展示普通的文本,还可能需要对文本进行样式化处理,或者对部分文字添加特殊功能,比如点击触发事件、设置不同颜色、背景色,甚至拨打电话。`TextView` 的强大之处就在于它可以支持这些...
- **题目**: 请写出使用纯Java JDBC驱动程序连接数据库的步骤。 - **解析**: 加载驱动、建立连接、执行SQL语句、处理结果集、关闭资源。 **完全数寻找** - **题目**: 方法void findPerfectNumber()的功能是找出1000...
1. **图像处理**:使用Java的`java.awt.image.BufferedImage`类生成和处理图像,包括添加噪声、文字、形状等元素。可以使用`Graphics2D`类进行绘制。 2. **裁剪与偏移**:创建两个`BufferedImage`对象,一个表示...
3. **事件处理机制**:理解如何为Swing组件添加事件监听器并处理相应事件。 4. **字符串处理**:熟悉字符串拼接、分割等操作,用于消息的格式化处理。 通过以上分析可以看出,这款QQ聊天器虽然简单,但涵盖了多个...
在Java代码中,可以通过将字符串和JavaScript方法名拼接成一个URL,然后使用loadUrl方法加载。在这个过程中,首先需要确定JavaScript中实现的方法名(在本例中为callBackServive),然后将需要传递的参数拼接成字符...
除了基础用法,Button和TextView还有许多进阶功能,如自定义样式、添加图片、设置文本颜色和字体等。例如,可以通过`android:background`为Button设置背景,通过`android:textColor`改变TextView的文本颜色。 对于...
### Java程序设计:读取文件并判断是否为外星文字 #### 作业背景与目标 本次作业(Assignment #6)是针对一门计算机科学基础课程(CSc127A)的学生设计的,主要目的是通过实践操作来加深学生对Java语言的理解,并...
使用这些资源,开发者可以构建自己的图像处理和计算机视觉应用,如人脸识别、物体检测、视频分析、图像拼接等。安装时,通常先解压opencv-4.4.0.zip,然后配置编译环境,再将opencv_contrib-4.4.0.zip中的模块添加到...
长图生成器是一款专为电脑用户设计的工具,主要用于创建和编辑长图片,尤其是对于需要在社交媒体上分享长篇内容的用户,如微博用户。它提供了便捷的方式将多张图片或文字整合成一张连续的、长条形的图片,使得在有限...
"文本文件加序号工具 v1.0" 是一个专为处理此类需求设计的实用工具,它能帮助用户快速地在文本文件中为特定文字添加序列号,对于需要自动生成具有顺序的文本内容,例如自动喊话软件中的脚本生成,非常有帮助。...
这些特性通常不包含在OpenCV的主要发行版中,但为开发者提供了更多的功能选择,比如面部识别、文字识别、深度学习模块(DNN)、Xfeatures2D模块(包含更多特征检测器和描述符),以及其他一些高级图像处理和计算机...