我已经编写了合并两个图像的代码。
我的代码是:
$rnd = rand("99000", "99999");
$dst_path = "/home/maxioutl/public_html/images/urunler/";
$dst_file_name = "tresim-{$rnd}.jpg";
$dst_file = $dst_path.$dst_file_name;
$dst = imagecreatetruecolor(250, 375);
imagefill($dst, 0, 0, imagecolorallocate($dst, 255, 255, 255));
$src = imagecreatefromjpeg("http://www.goldstore.com.tr/upload/product/raw/3.72925.0332.JPG");
imagecopymerge($dst, $src, 40, 60, 0, 0, 250, 375, 100);
imagejpeg($dst, $dst_file, 90);
结果:
黑色背景。它在哪里?
答案 0 :(得分:1)
正是这样做的imagecopymerge($dst, $src, 40, 60, 0, 0, 250, 375, 100);
声明。
您传递的是尺寸250x375
,而不是手表的实际尺寸。因此合并边界框继续,它使用黑色。如果你发表评论,你可以很容易地看到这一点,因为你会像你期望的那样从填充中获得白色方块。
您需要获取手表图形的确切尺寸(即通过getimagesize
)并将其传递给imagecopymerge,以便在合并时将其精确切割。
$arrSize = getimagesize($originalFile);
imagecopymerge($dst, $src, 40, 60, 0, 0, $arrSize[0], $arrSize[1], 100);
答案 1 :(得分:0)
您编写的代码叠加了图像。它不会使用手表从图像中删除白色像素。
它们基本上是重叠的。
您应循环显示两个图像尺寸,并用黑色像素或透明像素替换每个*白色像素。
*白色像素可能不一定意味着rgb(255,255,255)您可以选择将rgb(> 235,> 235,> 235)的所有像素视为“白色”。
答案 2 :(得分:0)
功能imagecreatetruecolor
创建完全黑色的图像
取自here:
imagecreatetruecolor()返回表示a的图像标识符 指定大小的黑色图像。