首页 > 解决方案 > 使用 PHP 将 3 张 jpg 图像相互叠加

问题描述

这个问题已经问过了,但这并不能解决我的问题。

我想使用 with 将combine3JPG张图像相互叠加PHP

我试过了PNG,效果很好。但是当我使用JPG图像时,我得到了这样的黑屏

在此处输入图像描述

这是我的代码:

<?php
ini_set('max_execution_time', 300);

function get_file($file, $from) {
    if (!file_exists(__DIR__ . "/" . $file)) { file_put_contents(__DIR__ . "/" . $file, file_get_contents($from)); }
}
get_file("background-layer-111.jpg", "https://img.youtube.com/vi/CQElIZzzlpc/hqdefault.jpg");
get_file("icon-layer-222.jpg", "https://img.youtube.com/vi/OK_JCtrrv-c&t=1732s/hqdefault.jpg");
get_file("stars-layer-333.jpg", "https://img.youtube.com/vi/1vYMqjNafww/hqdefault.jpg");

$bgFile = __DIR__ . "/background-layer-111.jpg"; 
$imageFile = __DIR__ . "/icon-layer-222.jpg"; 
$watermarkFile = __DIR__ . "/stars-layer-333.jpg"; 


$x = $y = 76;


$final_img = imagecreatetruecolor($x, $y);


$image_1 = imagecreatefromjpeg($bgFile);
$image_2 = imagecreatefromjpeg($imageFile);
$image_3 = imagecreatefromjpeg($watermarkFile);


imagealphablending($final_img, true);
imagesavealpha($final_img, true);


imagecopy($final_img, $image_1, 0, 0, 0, 0, $x, $y);
imagecopy($final_img, $image_2, 0, 0, 0, 0, $x, $y);
imagecopy($final_img, $image_3, 0, 0, 0, 0, $x, $y);

ob_start();
imagejpeg($final_img);
$watermarkedImg = ob_get_contents(); 
ob_end_clean(); 

header('Content-Type: image/jpeg');
echo $watermarkedImg; 

注意:我的代码仅适用于PNG,我想使用所有图像格式,例如JPG. 我参考这个网址 链接

标签: phpimageuploadjpeg

解决方案


推荐阅读