java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办 |
您所在的位置:网站首页 › pvc颜色不对如何处理干净图片 › java 的图片BufferedImage方式缩小后有严重色差/严重偏红怎么办 |
今天遇到的两个问题: 以上直接上关键代码: 原来处理的代码: 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还稍微小一点。 但却没有色差,几乎跟原图完全一样,效果很好。 上代码: 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 |