PHP GD библиотека, используемая для объединения двух изображений - PullRequest
0 голосов
/ 21 июня 2011

Хорошо, у меня есть два изображения в файле. Один из них - футболка. Другой имеет логотип. Я использовал CSS, чтобы стилизовать два изображения так, чтобы это выглядело как логотип на футболке. Я просто присвоил изображению логотипа более высокий z-индекс в таблице стилей CSS. Могу ли я в любом случае сгенерировать изображение как рубашки, так и изображения, объединенного в одно с использованием библиотеки GD?

Спасибо

Lance

Ответы [ 3 ]

7 голосов
/ 21 июня 2011

Это возможно. Пример кода:

// or whatever format you want to create from
$shirt = imagecreatefrompng("shirt.png"); 

// the logo image
$logo = imagecreatefrompng("logo.png"); 

// You need a transparent color, so it will blend nicely into the shirt.
// In this case, we are selecting the first pixel of the logo image (0,0) and
// using its color to define the transparent color
// If you have a well defined transparent color, like black, you have to
// pass a color created with imagecolorallocate. Example:
// imagecolortransparent($logo, imagecolorallocate($logo, 0, 0, 0));
imagecolortransparent($logo, imagecolorat($logo, 0, 0));

// Copy the logo into the shirt image
$logo_x = imagesx($logo); 
$logo_y = imagesy($logo); 
imagecopymerge($shirt, $logo, 0, 0, 0, 0, $logo_x, $logo_y, 100); 

// $shirt is now the combined image
// $shirt => shirt + logo


//to print the image on browser
header('Content-Type: image/png');
imagepng($shirt);

Если вы не хотите указывать прозрачный цвет, а вместо этого хотите использовать альфа-канал, вы должны использовать imagecopy вместо imagecopymerge. Как это:

// Load the stamp and the photo to apply the watermark to
$logo = imagecreatefrompng("logo.png");
$shirt = imagecreatefrompng("shirt.png");

// Get the height/width of the logo image
$logo_x = imagesx($logo); 
$logo_y = imagesy($logo);

// Copy the logo to our shirt
// If you want to position it more accurately, check the imagecopy documentation
imagecopy($shirt, $logo, 0, 0, 0, 0, $logo_x, $logo_y);

Ссылки:
imagecreatefrompng
imagecolortransparent
imagesx
imagesy
imagecopymerge
imagecopy

Учебник с PHP.net для изображений водяных знаков
Учебник из PHP.net для изображений водяных знаков (с использованием альфа-канала)

1 голос
/ 21 июня 2011

Этот урок должен начать http://www.php.net/manual/en/image.examples.merged-watermark.php и на правильном пути

1 голос
/ 21 июня 2011
...