使用PHP合并图像

时间:2012-06-06 12:52:08

标签: php

我已经编写了合并两个图像的代码。

我的代码是:

$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);

结果:

black bg 黑色背景。它在哪里?

3 个答案:

答案 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的图像标识符   指定大小的黑色图像。