
Оценка качества изображения для печати
Качество изображения измеряется в количествах пикселей (точек) на дюйм (1 дюйм = 25.4 мм), единица измерения - dpi (Dots Per Inch). К типографской печати обычно принимаются изображения не менее 150 dpi, а вот для фотопечати качество должно быть уже 300 dpi и больше. Однако, при оценке качества изображения обязательно надо учитывать и размер печати. К примеру, исходный файл из цифромыльницы с разрешением 1200х900 пикселов будет неплохо смотреться на фотокарточке 10х15 см, но для печати на плакате его качества будет недостаточно. А кадры с Nikon D800 разрешением 7360х4912 пикселов можно без проблем распечатать на формате A1 и повесить на стенку.
Для вычисления dpi надо желаемые размеры печати перевести в дюймы, а затем поделить разрешение исходного файла на эти значения по ширине и высоте. Полученные значения dpi и будут искомым результатом оценки качества изображения. Осталось оформить это все вот в такую несложную функцию:
// Функция для расчета dpi изображения
function get_dpi($picture, $print_x, $print_y) {
if (file_exists($picture)) {
list ($x,$y)=GetImageSize($picture);
if ($x && $y && $print_x && $print_y) {
// "Повернуть" изображение под размер печати
if ($print_x<$print_y) {
if ($x>$y) {
list ($x,$y)=array($y,$x);
}
}
// Посчитать dpi по ширине и высоте
$dpi=array(
'dpi_x'=>intval($x/($print_x/2.54)),
'dpi_y'=>intval($y/($print_y/2.54))
);
return $dpi;
}
else {
return false;
}
}
else {
return false;
}
}
Параметры функции: $picture - путь к файлу с изображением, $print_x - ширина печати в сантиметрах, $print_y - высота печати в сантиметрах. На выходе массив со значениями dpi по высоте и ширине для данного изображения или false, если файл отсутствует, имеет неправильный формат или заданы неправильные размеры печати. В случае необходимости изображение будет "повернуто" под размер печати.
Теперь несколько примеров ее использования. Для тестов я взял две фотографии - 1200х900 и 7360х4912 пикселов. Вот результаты работы функции для различных форматов печати:
//------------------------------------------------------
// pict1.jpg - файл разрешением 1200х900 пикселов
//------------------------------------------------------
// Фотография 10х15
get_dpi('pict1.jpg',10.2,15.2);
// [dpi_x] => 224 [dpi_y] => 200
// Плакат формата А1
get_dpi('pict1.jpg',84.1,59.4);
// [dpi_x] => 36 [dpi_y] => 38
//------------------------------------------------------
// pict2.jpg - файл разрешением 7360х4912 пикселов
//------------------------------------------------------
// Фотография 10х15
get_dpi('pict2.jpg',10.2,15.2);
// [dpi_x] => 1223 [dpi_y] => 1229
// Плакат формата А1
get_dpi('pict2.jpg',84.1,59.4);
// [dpi_x] => 222 [dpi_y] => 210
// Плакат формата А0
get_dpi('pict2.jpg',84.1,118.9);
// [dpi_x] => 148 [dpi_y] => 157
Как видите, первую картинку можно распечатать в формате 10х15, хотя даже для такого размера качество будет уже меньше рекомендуемого 300 dpi. А вторая картинка поместится даже на А0 без особой потери качества (при условии, конечно, что ее не будут рассматривать в упор).
Если изображение будет вписано или растянуто в размер печати, то в этом случае оценочным будет являться большее из двух значений. Если требуется обрезка изображения под размер печати, то в качестве оценочного dpi надо использовать меньшее значение.