我有一个网站截图,固定宽度和高度说600x400px,现在我希望这个图像与其他桌面屏幕上的图像合并。现在该屏幕不是正方形或矩形,这意味着我的图像需要适合屏幕的桌面。我只想在(x1,x2)(y1,y2)坐标中填充我的截图图像。
我需要的是黑色图像需要适合笔记本电脑的黑屏区域。
我搜索了Imagick,但不确定使用哪种功能。作为参考我试图做像placeit.net
这样的事情请帮助..
答案 0 :(得分:3)
从技术上讲,您需要使用仿射透视转换将要叠加的图像转换为背景图像。这有点难。
幸运的是,Image Magick中有一种更简单的方法,您只需在源图像空间中定义4个点,然后在最终图像空间中定义4个点,Image Magick就可以为您完成所有计算。
使用您提供的图片和代码:
<?php
$overlay = new Imagick(realpath("../images/overlay.jpg"));
$imagick = new Imagick(realpath("../images/Screeny.png"));
$overlay->setImageVirtualPixelMethod(Imagick::VIRTUALPIXELMETHOD_TRANSPARENT);
$width = $overlay->getImageWidth();
$height = $overlay->getImageHeight();
$points = array(
0, 0, 364, 51,
$width, 0, 473.4, 23,
0, $height, 433.5, 182,
$width, $height, 523, 119.4
);
$overlay->modulateImage(97, 100, 0 );
$overlay->distortImage(Imagick::DISTORTION_PERSPECTIVE, $points, TRUE );
//The offsets should be the minimum of the x and y values
$imagick->compositeImage($overlay, Imagick::COMPOSITE_OVER, 364.5, 23.5);
header("Content-Type: image/png");
echo $imagick->getImageBlob();
产生的图像非常像:
btw我建议以高于所需的分辨率进行此操作,然后进行下采样,并对叠加图像应用透明模糊,尝试使其看起来更逼真。