Member 12722563 Ответов: 1

Для изменения dpi изображения


как я могу изменить dpi изображения с 96 dpi на 300 dpi i c#

Что я уже пробовал:

частный недействительными методе button2_click(объект отправителя, EventArgs в электронной)
{
var filename = @ " --input--image--";
var targetfile = @ " --output-image--";

using (var image = изображение.FromFile(имя файла))
{
// смена до 96 точек на дюйм
разрешение var = новый байт[8] { 0, 0, 96, 0, 0, 0, 1, 0 };

если (изображение.PropertyIdList.Содержит(282))
{
var xResolution = изображение.GetPropertyItem(300);
xResolution.Значение = разрешение;
изображение.SetPropertyItem(xResolution);
}
если (изображение.PropertyIdList.Содержит(283))
{
var yResolution = изображение.GetPropertyItem(300);
yResolution.Значение = разрешение;
изображение.SetPropertyItem(yResolution);
}

изображение.Сохранить (targetfile, image.RawFormat);
}
}
но это не работает

Philippe Mori

Неужели так трудно использовать блок кода, чтобы сделать код читаемым? Мне неинтересно отвечать на такие вопросы, поскольку для понимания неформатированного кода требуется в два раза больше времени...

1 Ответов

Рейтинг:
0

OriginalGriff

Изменение разрешения сложно: это не просто случай изменения простой переменной.
Вам нужно посмотреть, как хранятся изображения: они содержат фиксированное количество пикселей (ширина x по высоте y), и значение DPI определяет только то, сколько из них изначально отображается в физическом дюйме на конкретном устройстве, когда изображение рисуется на нем. Изменение значений DPI в файле не изменяет количество пикселей и часто не влияет на то, как отображается изображение, учитывая, что оно часто растягивается или сжимается, чтобы вписаться в определенную часть дисплея или страницы.

Можно "увеличить" или "уменьшить" разрешение путем повторного рендеринга изображения, но это не добавляет деталей (несмотря на то, что вы видите по телевизору) - это просто делает пиксели больше или экстраполирует дополнительные значения пикселей, когда вы увеличиваете масштаб, или отбрасывает детали, когда вы уменьшаете масштаб. Даже тогда это не тривиальный процесс.

А чтение и сохранение файлов-плохая идея, если только вам это действительно не нужно - большинство изображений сжимаются, а самый популярный формат-jpeg-использует сжатие с потерями, поэтому каждый раз, когда вы сохраняете изображение, вы теряете данные, которые не можете восстановить. Часто 4 или 5 сохранений достаточно, чтобы уменьшить файл до непригодности, но даже один дополнительный может заметно "смягчить" детали.