Есть шаблон в PNG
И есть скриншот
Средствами PHP нужно:
а) Обрезать (изменить размер?) скриншот под размеры экрана шаблона (экран вырезан, он прозрачный).
б) Придать перспективу скриншоту.
в) Вставить скриншот на прозрачную область шаблона.
Что нужно использовать - GD, Imagick? И как вставлять скриншот - по координатам или по маске экрана шаблона?
Ответ
Я думаю, стоит использовать ImageMagick. Он умеет искажать в перспективе, по четырём точкам – что вам и нужно. И вот примеры искажений на php – вам понадобится Bilinear:
//Example 5 - Bilinear
$imagick = new \Imagick(realpath($this->control->getImagePath()));
$points = array(
0, 0, 25, 25, # top left
176, 0, 126, 0, # top right
0, 135, 0, 105, # bottom right
176, 135, 176, 135 # bottum left
);
$imagick->setImageBackgroundColor("#fad888");
$imagick->setImageVirtualPixelMethod(\Imagick::VIRTUALPIXELMETHOD_BACKGROUND);
$imagick->distortImage(\Imagick::DISTORTION_BILINEAR, $points, true);
header("Content-Type: image/jpeg");
echo $imagick;
Понадобятся 4 точки из исходного изображения – просто углы скриншота, и 4 точки, в которые они должны после искажения попасть – границы области экрана в PNG.
Ваш скрин не совсем хорош пропорциями: он квадратный, а у экрана iPad mini экран 4:3 (1024:768). Если вписывать по ширине, снизу останется пустое место. Если по высоте, край пропадёт из виду. Просто вписать – растянется в высоту.
Комментариев нет:
Отправить комментарий