3 хака при изменении размера изображений с помощью GD в PHP


1. Улучшенное сглаживание в GD на основе сэмплирования

GD имеет хреновую реализацию сглаживания, но это можно быстро исправить с помощью простого хака:

<?php

$im = imagecreatetruecolor(4000, 3000);
imageantialias($im, true);

$c_black = imageColorAllocate($im, 0,0,0);
$c_green = imageColorAllocate($im, 46,204,64);

imagefilledellipse($im, 2000, 1500, 800, 800, $c_green);

$imf = imagecreatetruecolor(400, 300);
imagecopyresampled($imf, $im, 0,0,0,0, 400,300,4000,3000);

imagePng($imf, '/tmp/image.png');
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Откройте оригинал или отредактируйте на Github.

2. Измените размер изображения пропорционально

<?php

$file = '/var/www/examples/heroine.png';
$size = getimagesize($file);
$im = imagecreatefrompng($file);

$w = 400;
$h = $w * $size[1] / $size[0];

$imf = imagecreatetruecolor($w, $h);
imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);

imagePng($imf, '/tmp/image.png');
Войдите в полноэкранный режим Выйти из полноэкранного режима

Откройте оригинал или правку на Github.

3. Изменение размера прозрачного изображения PNG

<?php

$file = '/var/www/examples/clouds.png';
$size = getimagesize($file);
$im = imagecreatefrompng($file);

$w = 300;
$h = $w * $size[1] / $size[0];

$imf = imagecreatetruecolor($w, $h);
imagealphablending($imf, false);
imagesavealpha($imf, true);
imagecopyresampled($imf, $im, 0,0,0,0, $w,$h,$size[0],$size[1]);

imagePng($imf, '/tmp/image.png');
Войдите в полноэкранный режим Выйти из полноэкранного режима

Откройте оригинал или отредактируйте на Github.

Оцените статью
devanswers.ru
Добавить комментарий