PHP

Оценка качества изображения для печати


Оценка качества изображения для печати

Качество изображения измеряется в количествах пикселей (точек) на дюйм (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 надо использовать меньшее значение.
Теги:
изображение, печать
Добавлено: 21 Сентября 2013 12:46:08 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...