Как я могу установить 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?

0

Решение

Похоже, расширение PHP GD не может указать DPI напрямую при записи файла изображения. У вас есть два варианта:

  • Изменить #define GD_RESOLUTION 72 в исходном коде GD до желаемого значения и перекомпилируйте расширение GD самостоятельно. Будьте осторожны, это повлияет на все изображения, сохраненные GD в вашей системе.
  • Управляйте двоичным файлом (JPEG или PNG?), Чтобы изменить значение DPI в заголовке файла. DPI — это только мета-значение, оно не связано с данными пикселей.

Что приводит меня к вопросу, почему вы изменяете размер изображения, если вам нужно только изменить значение DPI? Или наоборот — зачем вам нужно менять DPI, когда вы все равно изменяете размер изображения? Используется ли изображение для печати?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]