Image IO Problem - PullRequest
       13

Image IO Problem

1 голос
/ 20 апреля 2011
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 точек на дюйм, но исходное изображение было 72 точек на дюйм! почему

Ответы [ 3 ]

1 голос
/ 25 апреля 2011
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();
0 голосов
/ 20 апреля 2011

Посмотрите ответ здесь ранее просили PNG-изображения

ImageIO позволяет вам установить метаданные изображения для некоторых форматов вывода, но это не тривиальная задача и может не поддерживаться для изображений JPEG.

0 голосов
/ 20 апреля 2011

похоже, есть значение по умолчанию. image.setDpi(72) работает?

...