Сглаживание изображения
Самый простой способ сглаживания изображения - это уменьшение размера в четное количество раз с использованием фильтрации (Бикубической, Bell, B-Spline, Lanczos).
Я не удосужился разобраться, какую фильтрацию использует функция imagecopyresampled()
, но судя по официальной документации PHP и проведенным мной испытаниям, она вполне подходит для наших целей.
Все что нам нужно - это построить изображение заведомо большего размера. В примере 36 я немого модифицировал исходный код примера 30 (Рисование карты России) из урока 8.
Пример 36: Сглаживание изображения с помощью двукратного уменьшения.
<?php // Ширина и высота изображения $W=500*2; $H=375*2; // Исходный код построения карты России пропущен. // Смотрите урок №8 $imd=imagecreatetruecolor($W/2,$H/2); imagecopyresampled($imd,$im,0,0,0,0,$W/2,$H/2,$W,$H); imagedestroy($im); imagepng($imd); imagedestroy($im); ?>
Скачать исходный код в архиве (ZIP,10Kb)
Так выглядела карта до сглаживая:
Так выглядит карта после двукратного уменьшения с помощью функции imagecopyresampled()
:
Все гениальное просто!! Главное помните, что если вы рисуете увеличиную картинку, то на ней линии должны быть толще, текст больше и т.п.