You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/ImageMagick实现图片按自定义四角坐标贴入1920x1080画布

图片透视映射至指定画布的PHP/ImageMagick实现方案

ImageMagick 命令行方案

通过**透视畸变(Perspective Distortion)**直接完成源图四角到目标画布指定坐标的映射,命令如下:

magick -size 1920x1080 xc:none \
  \( input.jpg -distort Perspective '0,0 500,250  %w,0 250,380  0,%h 400,700  %w,%h 1500,800' \) \
  -composite output.png
  • 参数说明:
    • -size 1920x1080 xc:none:创建1920x1080的透明背景画布
    • input.jpg:替换为你的源图片路径
    • -distort Perspective:触发透视变换,引号内为映射规则——源图坐标 目标画布坐标依次对应左上、右上、左下、右下四个角,%w/%h自动获取源图宽高
    • -composite:将变换后的源图合成到目标画布

PHP Imagick 代码方案

利用Imagick的distortImage方法执行透视变换,再合成到目标画布:

<?php
// 创建1920x1080透明画布
$canvas = new Imagick();
$canvas->newImage(1920, 1080, new ImagickPixel('transparent'));
$canvas->setImageFormat('png');

// 加载源图片
$sourceImg = new Imagick('input.jpg');
$srcW = $sourceImg->getImageWidth();
$srcH = $sourceImg->getImageHeight();

// 定义透视映射坐标组:源图四角 → 目标画布指定坐标
$perspectivePoints = [
    0, 0,               // 源图左上
    500, 250,           // 目标CP1
    $srcW, 0,           // 源图右上
    250, 380,           // 目标CP2
    0, $srcH,           // 源图左下
    400, 700,           // 目标CP3
    $srcW, $srcH,       // 源图右下
    1500, 800           // 目标CP4
];

// 执行透视变换
$sourceImg->distortImage(Imagick::DISTORTION_PERSPECTIVE, $perspectivePoints, true);

// 合成到画布
$canvas->compositeImage($sourceImg, Imagick::COMPOSITE_OVER, 0, 0);

// 保存结果
$canvas->writeImage('output.png');

// 释放资源
$sourceImg->destroy();
$canvas->destroy();
?>
  • 注意事项:
    • 确保PHP环境已安装并启用Imagick扩展
    • 若需要非透明画布,将transparent替换为具体颜色值(如#ffffff)
    • 变换后若出现边缘异常,可调整distortImage第三个参数(是否保留源图尺寸),或提前对源图做裁剪/缩放处理

内容的提问来源于stack exchange,提问作者Jackie Chan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:07:30