powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как поменять resolution в BufferedImage?
10 сообщений из 10, страница 1 из 1
Как поменять resolution в BufferedImage?
    #38986804
aleks.eustace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как правильно поменять размер изображения через BufferedImage.
Мне надо из имеющегося изображения сделать новое с такимиже размерами

Код: java
1.
2.
3.
4.
5.
6.
7.
 
        int type = originalImage.getType() == 0 ? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
        BufferedImage resizedImage = new BufferedImage(width, height, type);
        Graphics2D g = resizedImage.createGraphics();
        g.drawImage(originalBitmap, 0, 0, width, height, null);
        g.dispose();
        return resizedImage;


В результате размер в пикселях нового BufferedImage меняется, но resolution устанавливается по умолчанию 72x72 ppi и
соответственно размер изображения в mm уменьшается. Чтобы новое изображение имело нужный мне размер и в пикселях и в мм,
мне надо назначить ему такое же разрешение, как в исходном изображении. Но в BufferedImage ничего такого нет. Как это сделать?
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38986885
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks.eustace,

BufferedImage это интерфейс для доступа к массиву растра. Вы где-то видели методы для изменения размеров массива? Подозреваю что нет.

То что вы называете "поменять resolution" называется resize. Google -> BufferedImage resize выдаст вам массу примеров.
В том числе вам бы ещё не ленится и воспользоваться поиском по сайту. Не так давно здесь было большое обсуждение на тему качества масштабирования изображений.

Кстати, по-русски "масштабирование". Запоминайте термины и тогда не будет проблем с поиском.
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987014
aleks.eustace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну хорошо, тогда такой простой вопрос - вот я создаю новое изображение, которое хочу чтобы имело

Код: java
1.
2.
Size in pixels 268 x 78 pixels
Print size 56,73 x 16,51 mm


Для этого он должен иметь разрешение 120 x 120 ppi

Я делаю
Код: java
1.
2.
BufferedImage bufferedImage = new BufferedImage(201, 59 , BufferedImage.TYPE_INT_ARGB);
ImageIO.write(bufferedImage, "png", new File("path"));



и получаю там

Код: java
1.
2.
3.
Size in pixels 268 x 78 pixels
Print size 94,54 x  27,52 mm
Resolution 72 x 72 ppi



Чтобы в mm был такой размер как нужен (56,73 x 16,51 mm) я должен изменить resolution.
На каком этапе и с каким объектом это делать тогда?
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987028
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BufferedImage
Это интерфейс доступа к растру.
Растр это массив. Растр не обладает параметрами DPI/PPI.
DPI/PPI это параметры устройства вывода растра. В зависимости от этих параметров, один и тот же растр выводится в изображение разного размера. Сам растр при этом вообще не меняется никак.

PPI в PNG это просто некие информационные мета-данные, которые устройство вывода может использовать для оптимизации этого самого вывода.

http://stackoverflow.com/questions/321736/how-to-set-dpi-information-in-an-image
https://www.google.com/search?q=Java PNG PPI
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987559
aleks.eustace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему тогда такой метод существует у аналога BufferedImage - Bitmap в C#, если типа он не актуален в контексте просто хранилища байтов?

https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.setresolution(v=vs.110).aspx
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987628
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks.eustaceПочему тогда такой метод существует у аналога BufferedImage - Bitmap в C#, если типа он не актуален в контексте просто хранилища байтов?

https://msdn.microsoft.com/en-us/library/system.drawing.bitmap.setresolution(v=vs.110).aspx
Проектировщики решили что так удобнее. Bitmap его никак не использует. Только таскает с собой везде. А использует его уже устройства вывода по своему усмотрению.
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987883
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks.eustace,

так что в итоге нужно - размер растра изменить или метаданные переписать?
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38987902
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилaleks.eustace,
так что в итоге нужно - размер растра изменить или метаданные переписать?
Похоже код с дотнета на яву переписывает как есть.
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38999292
aleks.eustace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо переписать метаданные на случай когда их нет в настройках изображения.
По этому значению надо в системе ориентироваться, и записывать какое то новое, если его нет.
...
Рейтинг: 0 / 0
Как поменять resolution в BufferedImage?
    #38999323
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks.eustaceНадо переписать метаданные на случай когда их нет в настройках изображения.
По этому значению надо в системе ориентироваться, и записывать какое то новое, если его нет.
В BufferedImage этих метаданных нет. Они есть в PNG формате.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как поменять resolution в BufferedImage?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]