图像IO问题

发布于 2024-11-02 14:05:39 字数 321 浏览 3 评论 0原文

for (int i = 0; i < width; i++) {
      for (int j = 0; j < height; j++) {
        int intPixel = image.getRGB(i, j);            

        image.setRGB(i, j, intPixel);
      }      
    }
ImageIO.write(image, "JPG", new File("img/newfile01.jpg"));

此代码生成 96 dpi 的图像,但源图像是 72 dpi!为什么

for (int i = 0; i < width; i++) {
      for (int j = 0; j < height; j++) {
        int intPixel = image.getRGB(i, j);            

        image.setRGB(i, j, intPixel);
      }      
    }
ImageIO.write(image, "JPG", new File("img/newfile01.jpg"));

This code make a 96dpi image but the source image was 72 dpi! why

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

同尘 2024-11-09 14:05:39
BufferedImage image = ImageIO.read(inputFile);

      if (image.getColorModel().getColorSpace().getType() == ColorSpace.TYPE_GRAY) {
        System.out.println("is grayscale");
      }

      // create jpegEncode for output image
      JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(outputFile));




      // create jpeg encoder from getting defaul value from input buffered
      // image
      JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
      // setting up density unit paramter
      jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
      // setting up jpeg encode parameter
      jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
      // set quality parameter
      jpegEncodeParam.setQuality(0.75f, false);
      // set X-resolution
      jpegEncodeParam.setXDensity(X_DPI);
      // set Y-resolution
      jpegEncodeParam.setYDensity(Y_DPI);
      // encode output image
      jpegEncoder.encode(image, jpegEncodeParam);
      // flush the buffer image
      image.flush();
BufferedImage image = ImageIO.read(inputFile);

      if (image.getColorModel().getColorSpace().getType() == ColorSpace.TYPE_GRAY) {
        System.out.println("is grayscale");
      }

      // create jpegEncode for output image
      JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(new FileOutputStream(outputFile));




      // create jpeg encoder from getting defaul value from input buffered
      // image
      JPEGEncodeParam jpegEncodeParam = jpegEncoder.getDefaultJPEGEncodeParam(image);
      // setting up density unit paramter
      jpegEncodeParam.setDensityUnit(JPEGEncodeParam.DENSITY_UNIT_DOTS_INCH);
      // setting up jpeg encode parameter
      jpegEncoder.setJPEGEncodeParam(jpegEncodeParam);
      // set quality parameter
      jpegEncodeParam.setQuality(0.75f, false);
      // set X-resolution
      jpegEncodeParam.setXDensity(X_DPI);
      // set Y-resolution
      jpegEncodeParam.setYDensity(Y_DPI);
      // encode output image
      jpegEncoder.encode(image, jpegEncodeParam);
      // flush the buffer image
      image.flush();
唐婉 2024-11-09 14:05:39

似乎有一个默认值。 image.setDpi(72) 有效吗?

it seems there is a default value. Does image.setDpi(72) work?

往事随风而去 2024-11-09 14:05:39

看看这里的答案之前询问过 PNG 图像

ImageIO 允许您为某些输出格式设置图像元数据,但这不是一项简单的任务,并且可能不支持 JPEG 图像。

Take a look at the answer here previously asked for PNG images

ImageIO allows you to set image metadata for some output formats, but it is not a trivial task, and may not be supported for JPEG images.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文