Java JPG To Png - PullRequest
       19

Java JPG To Png

3 голосов
/ 18 мая 2011

Я использую общий формат приложения для изображений как png. Любое загруженное изображение jpg по-прежнему сохраняется как png с использованием кода, как показано ниже.

java.awt.image.BufferedImage bufferedImage = ImageIO.read(jpgImagePAth);

 if(!IsExtensionPng(jpgImagePath)){
        ImageIO.write(bufferedImage, "png", new File(pptFolder, justNamePng));
  }

Но это сохраняет альфа, хотя его там не былов JPG так делает 2 МБ изображения 7 МБ и 6 МБ до 16 МБ.Есть ли способ сохранить png без сохранения альфы?

Причина, по которой мне нужно конвертировать в PNG, заключается в том, что позже, когда я добавляю текст на изображение, оно теряет фактическое разрешение.Я уже пробовал без потерь JPEG, который не исправить.

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Размер файла увеличивается не по альфа-каналу, а по типу файла.JPG использует сжатие с потерями;PNG - сжатие без потерь.Другими словами, JPG выбрасывает некоторые данные, чтобы уменьшить размер файла.Вот почему вы выбираете уровень «качество» при сохранении в JPG - это определяет, сколько выбрасывается.

Откуда вы знаете, что у вас есть альфа-канал?Если вы все еще хотите PNG и хотите быть уверены, что вы отбрасываете альфа-канал, установите тип изображения на BufferedImage.TYPE_RGB, например

BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_RGB);

. Вам нужно будет связать графический объект с новымBufferedImage и скопируйте jpg на него, затем запишите его. Этот вопрос не совсем совпадает с вашим, но содержит пример кода, который вы можете найти полезным.

Пол

1 голос
/ 18 мая 2011

Я не знаю точно, в какой вы ситуации. Но я должен сохранить JPEG JPEG. Единственное преимущество преобразования JPEG в PNG - это потеря пространства на жестком диске.

...