温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用java代码P图

发布时间:2022-07-28 10:37:13 来源:亿速云 阅读:197 作者:iii 栏目:开发技术

这篇文章主要介绍了怎么用java代码P图的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么用java代码P图文章都会有所收获,下面我们一起来看看吧。

准备阶段

原图(来源于网络)

怎么用java代码P图

PS处理后的模板图

怎么用java代码P图

待合成图片

怎么用java代码P图

图片合成

基本步骤

  • 读取模板图和待合成图,调整待合成图的尺寸、旋转角度、亮度、对比度;

  • 创建一个与模板图尺寸一致的空白图像;

  • 创建 Graphics2D 对象,通过 Graphics2D 对象的 drawImage() 方法将待合成图和模板图绘制进空白图像的指定位置(需要注意图层顺序,先绘制待合成图,后绘制模板图);

  • 输出空白图像(合成后的图像)到本地。

代码

图片尺寸调整、旋转使用到了 Thumbnailator, 需添加 Maven 依赖

<dependency>	<groupId>net.coobird</groupId>	<artifactId>thumbnailator</artifactId>	<version>0.4.8</version> </dependency>
/**  * 横坐标  */ private static final int x = 457; /**  * 纵坐标  */ private static final int y = 295; /**  * 旋转角度  */ private static final double angle = 16; /**  * 缩放比例  */ private static final double scale = 0.18; /**  * 图片合成  *  * @param imagePath 待合成的图片路径  * @param outPath 合成后的图片输出路径  * @throws IOException  */ private static void synthesis(String imagePath, String outPath) throws IOException {	// 模板图	BufferedImage template = ImageIO.read(new File("D:\\local\\images\\template.png"));	// 待合成图	BufferedImage image = ImageIO.read(new File(imagePath));	// 调整待合成图的尺寸和旋转角度	image = Thumbnails.of(image).scale(scale).rotate(angle).asBufferedImage();	// 合成后的图	BufferedImage result = new BufferedImage(template.getWidth(), template.getHeight(), template.getType());	Graphics2D graphics2D = result.createGraphics();	// 先画待合成图,后画模板图,这样就能将待合成图放置在模板图的下层	graphics2D.drawImage(image, x, y, null);	graphics2D.drawImage(template,0,0, null);	graphics2D.dispose();	ImageIO.write(result, "png", new File(outPath)); }

运行代码

public static void main(String[] args) throws IOException {	synthesis("D:\\local\\images\\weixin_payment_code.png", "D:\\local\\images\\result.png"); }

怎么用java代码P图

调整图片亮度、对比度

/**  * 调整亮度、对比度  *  * @param image  */ private static void adjustBrightnessAndContrast(BufferedImage image) {	int width = image.getWidth();	int height = image.getHeight();	for (int x = 0; x < width; x++) {	for (int y = 0; y < height; y++) {	Color color = new Color(image.getRGB(x, y));	int red = calculateColor(color.getRed());	int green = calculateColor(color.getGreen());	int blue = calculateColor(color.getBlue());	color = new Color(red, green, blue);	image.setRGB(x, y, color.getRGB());	}	} } /**  * 亮度,取值范围[-1,1]  */ private static final double BRIGHTNESS = 0; /**  * 对比度,取值范围[-1,1]  */ private static final double CONTRAST = -0.5; /**  * 计算亮度、对比度颜色值  *  * @param color 原颜色值  * @return 返回计算后的颜色值  */ private static int calculateColor(int color) {	color = (int)((color - 127.5 * (1 - BRIGHTNESS)) * Math.tan((45 + 44 * CONTRAST) / 180 * Math.PI) + 127.5 * (1 + BRIGHTNESS));	return getColor(color); } /**  * 获取范围内的颜色值,[0,255]  *  * @param color  * @return  */ private static int getColor(int color) {	return color > 255 ? 255 : color < 0 ? 0 : color; }

在处理待合成图片的尺寸和旋转角度后调用 adjustBrightnessAndContrast() 方法调整亮度和对比度

... // 调整待合成图的尺寸和旋转角度 image = Thumbnails.of(image).scale(scale).rotate(angle).asBufferedImage(); // 调整待合成图片的亮度、对比度 adjustBrightnessAndContrast(image); ...

重新运行代码

怎么用java代码P图

关于“怎么用java代码P图”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“怎么用java代码P图”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI