java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办

您所在的位置:网站首页 pvc颜色不对如何处理干净图片 java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办

java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办

2023-11-15 23:11| 来源: 网络整理| 查看: 265

今天遇到的两个问题: 在这里插入图片描述 在这里插入图片描述 图片本如图1所示, java处理后,变成了图2所示,严重失真,偏红,怎么办?

以上直接上关键代码:

原来处理的代码:

import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class BufferedImageTool { public static void resize(String imgPath, double factor) throws IOException { File file = new File(imgPath); BufferedImage bufferedImage = ImageIO.read(file); int width = (int) (bufferedImage.getWidth() * factor); int height = (int) (bufferedImage.getHeight() *factor); BufferedImage bufferedImage1 = resize(bufferedImage, width, height); File outfile = new File("image.jpg"); ImageIO.write(bufferedImage1, "jpg", outfile); } /** * https://blog.csdn.net/zhongguowangzhan/article/details/114977785 */ public static BufferedImage resize(BufferedImage img, int newW, int newH) { Image tmp = img.getScaledInstance(newW, newH, Image.SCALE_SMOOTH); BufferedImage dimg = new BufferedImage(newW, newH, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = dimg.createGraphics(); g2d.drawImage(tmp, 0, 0, null); g2d.dispose(); return dimg; } }

后来找到了一个库,效果非常好,处理完后的图片大小比图2还稍微小一点。 但却没有色差,几乎跟原图完全一样,效果很好。 在这里插入图片描述 直接上代码, 依赖 thumbnailator库。

net.coobird thumbnailator 0.4.14

上代码:

import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import net.coobird.thumbnailator.Thumbnails; /** * */ public class ThumbnailsTool { public static void resize(String imgPath, double factor) throws IOException { File localTempFile = new File(imgPath); BufferedImage bufferedImage = ImageIO.read(localTempFile); int width = (int) (bufferedImage.getWidth() * factor); int height = (int) (bufferedImage.getHeight() * factor); // BufferedImage 第三方库压缩图片画幅。JDK自带的会有严重色差 Thumbnails.of(localTempFile) .size(width, height) .outputFormat("jpg") .toFile(new File("image2.jpg")); } }

入口Main函数:

import image.ImageHelper; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URISyntaxException; import java.util.UUID; import net.coobird.thumbnailator.Thumbnails; public class Starter { public static void main(String[] args) throws IOException, URISyntaxException { String imageUrl = "D:\\MyJava\\java-image\\sky.jpg"; //1. BufferedImage的形式处理 BufferedImageTool.resize(imageUrl, 0.5); //2. Thumbnails 方式的处理 ThumbnailsTool.resize(imageUrl, 0.5); } }

产生的文件截图如下: 在这里插入图片描述

源码这里有: https://gitee.com/codejam_org/java-image



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3