Как я могу установить DPI/PPI через изменение размера GD?
Я нашел решения здесь и здесь, используя Imagick, но я действительно не хочу идти, хотя расширение Imagick из-за проблем безопасности.
В настоящее время я делаю изменение размера следующим образом:
list($width, $height) = getimagesize($file_path);
$src = imagecreatefrompng($file);
$dst = imagecreatetruecolor($newwidth, $newheight);
//prepare the transparency
imagealphablending($dst, false);
imagesavealpha( $dst , true );
$transparent = imagecolorallocatealpha($dst, 255, 255, 255, 127);
imagefilledrectangle($dst, 0, 0, $newwidth, $newheight, $transparent);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
Но он всегда устанавливает 72 DPI (переопределяя даже исходный файл DPI).
Есть ли способ установить DPI с помощью GD?
1 ответ
Решение
Похоже, расширение PHP GD не может указать DPI напрямую при записи файла изображения. У вас есть два варианта:
- Изменить
#define GD_RESOLUTION 72
в исходном коде GD до желаемого значения и самостоятельно перекомпилируйте расширение GD. Будьте осторожны, это повлияет на все изображения, сохраненные GD в вашей системе. - Управляйте двоичным файлом (JPEG или PNG?), Чтобы изменить значение DPI в заголовке файла. DPI - это только мета-значение, оно не связано с данными пикселей.
Что приводит меня к вопросу, почему вы изменяете размер изображения, если вам нужно только изменить значение DPI? Или наоборот - зачем вам нужно менять DPI, когда вы все равно изменяете размер изображения? Используется ли изображение для печати?