【问题标题】:Java PNG to JPG BugJava PNG 到 JPG 错误
【发布时间】:2012-03-22 06:59:45
【问题描述】:

我正在尝试按照this 教程将 PNG 图像转换为 JPEG 图像。但是我遇到了一个问题。生成的图像有一个粉红色层。

有人有解决这个问题的方法吗?或者我应该使用什么代码来将图像转换为所需的格式?

提前致谢!

【问题讨论】:

标签: java image-processing png jpeg


【解决方案1】:
  1. 创建所需大小的 BufferedImage,例如:

    BufferedImage img = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB)

  2. 用适当的背景颜色填充它:

    img.getGraphics().fillRect(....)

  3. 在该背景顶部的图像图形上调用 drawImage:

    img.getGraphics().drawImage(image, 0, 0, null);

然后像往常一样把你的图片写成JPG格式。

【讨论】:

【解决方案2】:

您使用的是哪种颜色模式?在创建缓冲图像对象时,尝试添加类似此选项的类型。

    File newFile = new File(path + fileName + "." + Strings.FILE_TYPE);

    Image image = null;
    try {
        image = ImageIO.read(url); // I was using an image from web
    } catch (IOException e1) {
        e1.printStackTrace();
    }

    image = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
    try {
        BufferedImage img = toBufferedImage(image);
        ImageIO.write(img, "jpg", newFile);
    } catch (IOException e) {
        e.printStackTrace();
    }



}

private static BufferedImage toBufferedImage(Image src) {
    int w = src.getWidth(null);
    int h = src.getHeight(null);
    int type = BufferedImage.TYPE_INT_RGB; // other options
    BufferedImage dest = new BufferedImage(w, h, type);
    Graphics2D g2 = dest.createGraphics();
    g2.drawImage(src, 0, 0, null);
    g2.dispose();
    return dest;
}

【讨论】:

  • 现在我在教程中有这 4 行。而且我不知道这些变量是什么:dest 和 src。如何申报?
猜你喜欢
  • 2011-08-28
  • 2015-04-06
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
  • 2011-08-04
  • 2015-10-06
  • 1970-01-01
相关资源
最近更新 更多