Что такое код imagecopymerge


Что такое код imagecopymerge

Пример #1 Использование imagecopymerge() создать полупрозрачный водяной знак

// Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
$im = imagecreatefromjpeg ( ‘photo.jpeg’ );

// Сначала создаем наше изображение штампа вручную с помощью GD
$stamp = imagecreatetruecolor ( 100 , 70 );
imagefilledrectangle ( $stamp , 0 , 0 , 99 , 69 , 0x0000FF );
imagefilledrectangle ( $stamp , 9 , 9 , 90 , 60 , 0xFFFFFF );
$im = imagecreatefromjpeg ( ‘photo.jpeg’ );
imagestring ( $stamp , 5 , 20 , 20 , ‘libGD’ , 0x0000FF );
imagestring ( $stamp , 3 , 20 , 40 , ‘(c) 2007-9’ , 0x0000FF );

// Установка полей для штампа и получение высоты/ширины штампа
$marge_right = 10 ;
$marge_bottom = 10 ;
$sx = imagesx ( $stamp );
$sy = imagesy ( $stamp );

// Слияние штампа с фотографией. Прозрачность 50%
imagecopymerge ( $im , $stamp , imagesx ( $im ) — $sx — $marge_right , imagesy ( $im ) — $sy — $marge_bottom , 0 , 0 , imagesx ( $stamp ), imagesy ( $stamp ), 50 );

imagecopymerge

(PHP 4 >= 4.0.1, PHP 5)

imagecopymerge — Copy and merge part of an image

Описание

Copy a part of src_im onto dst_im starting at the x,y coordinates src_x, src_y with a w >src_w and a height of src_h. The portion defined will be copied onto the x,y coordinates, dst_x and dst_y.

Список параметров

Destination image link resource.

Source image link resource.

x-coordinate of destination point.

y-coordinate of destination point.

x-coordinate of source point.

y-coordinate of source point.

The two images will be merged according to pct which can range from 0 to 100. When pct = 0, no action is taken, when 100 this function behaves >imagecopy() for pallete images, while it implements alpha transparency for true colour images.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Merging two copies of the PHP.net logo with 75% transparency

// Create image instances
$dest = imagecreatefromgif ( ‘php.gif’ );
$src = imagecreatefromgif ( ‘php.gif’ );

// Copy and merge
imagecopymerge ( $dest , $src , 10 , 10 , 0 , 0 , 100 , 47 , 75 );

// Output and free from memory
header ( ‘Content-Type: image/gif’ );
imagegif ( $dest );

imagedestroy ( $dest );
imagedestroy ( $src );
?>

Что такое код imagecopymerge

Пример #1 Использование imagecopymerge() создать полупрозрачный водяной знак

// Загрузка штампа и фото, для которого применяется водяной знак (называется штамп или печать)
$im = imagecreatefromjpeg ( ‘photo.jpeg’ );

// Сначала создаем наше изображение штампа вручную с помощью GD
$stamp = imagecreatetruecolor ( 100 , 70 );
imagefilledrectangle ( $stamp , 0 , 0 , 99 , 69 , 0x0000FF );
imagefilledrectangle ( $stamp , 9 , 9 , 90 , 60 , 0xFFFFFF );
imagestring ( $stamp , 5 , 20 , 20 , ‘libGD’ , 0x0000FF );
imagestring ( $stamp , 3 , 20 , 40 , ‘(c) 2007-9’ , 0x0000FF );

// Установка полей для штампа и получение высоты/ширины штампа
$marge_right = 10 ;
$marge_bottom = 10 ;
$sx = imagesx ( $stamp );
$sy = imagesy ( $stamp );

// Слияние штампа с фотографией. Прозрачность 50%
imagecopymerge ( $im , $stamp , imagesx ( $im ) — $sx — $marge_right , imagesy ( $im ) — $sy — $marge_bottom , 0 , 0 , imagesx ( $stamp ), imagesy ( $stamp ), 50 );

PHP, ImageCreate, imagecreatetruecolor, imagecopy, imagecopymerge

Я использую выше функции PHP и запутаться.

Сначала я готовлю два PNG файлов .

QRcode с прозрачным фоном и черной точкой, я создаю его этот код (только Keypoint, не все).

Я делаю PNG и использовать цвет, чтобы заполнить его фона с помощью MS Paint.

Приготовьте сделано. Тогда код

Код сделать 3.png как этот www.capbite.com/subfolder/lion/test/3.png

Теперь, если я использую

Трудно описать изображение, сделанное разными способами, поэтому я вставить ссылку об изображениях, но моя репутация не достаточно , чтобы получить возможность отправлять больше ссылок или изображения . — ред Нит;)

Мой вопрос, только 3.png, имеет прозрачный фон, даже использовать различные функции создания, но когда это скопировать на другое изображение, которое я создал или MS Paint, результат я встречаю.

В чем разница между ImageCreate и imagecreatetruecolor сделать 4-1.png и 4-3.png?

В чем разница между imagecopy & imagecopymerge (даже проц набор 100) делают 4-3.png и 4-4.png?

В чем разница между изображениями, которые я создал или с помощью MS краски делают 4-3.png и 5-3.png?

Я рекомендовал бы использовать imagecreate , не imagecreatetruecolor .

При использовании imagecreate , первый цвет вы определяете будет цвет фона , который заполняет весь холст. Это, как правило, ваш «прозрачный» цвет, однако , как правило , лучше (читай: более эффективным в файле) , чтобы сделать это следующим образом:

Таким образом, вы не используете альфа-канал, вы просто говорю это «что-то я рисую в ярко-розовый цвет будет прозрачным» — это то, как прозрачность работает в формате GIF изображений, кстати, и это также «традиционный «способ сделать это, путь назад на старых играх от многих много лет назад!

Использование imagecreate -порожденных изображений, копирование работает гораздо проще, потому что GD точно знает , что цвет является «прозрачным» и , следовательно , не должно быть скопировано на цель. При использовании imagecreatetruecolor , то вы попали в сложную и грязный бизнес композитинга .

Я надеюсь, что это помогает вам. GD может быть хитрым зверем освоить, но как только вы знаете основы, вы должны быть хорошо идти.

Imagecopymerge

Php функции


Php скрипты


imagecopymerge

(PHP 4 >= 4.0.1, PHP 5)

imagecopymerge — Copy and merge part of an image

Description

bool imagecopymerge ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct )

Copy a part of src_im onto dst_im starting at the x,y coordinates src_x , src_y with a w >defined will be copied onto the x,y coordinates, dst_x and dst_y . The two images will be merged according to pct which can range from 0 to 100. When pct = 0, no action is taken, when 100 this function behaves >for pallete images, while it implements alpha transparency for true colour images.

Замечание: This function was added in PHP 4.0.6

User Contributed Notes

jylyn at hotmail dot com
22-Feb-2006 12:49

A few corrections to the code supplied by nick at prient:

$iTemplate should be $iBackground
$iWorking should be $iSource

After fixing those two I found the script really useful, thanks!
nick at prient dot co dot uk
02-Nov-2005 01:15

Task: Rotate a large image, then reduce it in size and place it on a small background (i.e. as an Inset).

Илон Маск рекомендует:  Что такое код ncurses_scr_dump

Problem: If you resize the image first, the rotation becomes hugely aliased. So, it makes sense to rotate it first, then shrink it.
Unfortunately, when you resample the image, you lose the background color (at least, some of it may change), so you can no longer set transparancy as you require. If instead you resize the image (rather than resample), again, the aliasing looks bad.

Solution: Resize the background — make it bigger. Then add the original (large) inset, and resize the whole thing back to normal.

/* We will shrink the inset to 25% */
$resizePercentage = 0.25 ;

/* Load a source image and a background */
$iSource = ImageCreateFromJpeg ( $source_file );
$iBackground = ImageCreateFromJpeg ( $background_file );

/* Do something here, such a rotate, skew etc */
.
/* Assume $iSource is still the image we want to insert onto the background */

/* Set the background color to be transparent */
$cBackground = ImageColorClosest ( $iSource , 255 , 0 , 255 );
ImageColorTransparent ( $iSource , $cBackground );

/* Resize the background — make it huge */
$iBackground = ImageResize ( $iTemplate , ImageSX ( $iBackground ) / $resizePercentage , ImageSY ( $iBackground ) / $resizePercentage );
/* Place the image on the background — all full size, so no aliasing issues */
ImageCopyMerge ( $iBackground , $iSource ,
(( ImageSX ( $iBackground ) — ImageSX ( $iSource )) / 2 ),
(( ImageSY ( $iBackground ) — ImageSY ( $iSource )) / 2 ) — 25 , 0 , 0 , ImageSX ( $iWorking ), ImageSY ( $iSource ), 100 );
/* Shrink the combined image. no issues with transparancy! */
$iBackground = ImageResize ( $iTemplate , ImageSX ( $iBackground ) * $resizePercentage , ImageSY ( $iBackground ) * $resizePercentage );

/* Output the image as a PNG */
header ( «Content-Type: image/png» );
ImagePng ( $iBackground );
exit ();

function ImageResize ( $pImage , $t_width , $t_height ) <
// Target image
$iCanvas = @ImageCreateTrueColor ( $t_width , $t_height );
// Source dimensions
$s_width = ImageSX ( $pImage );
$s_height = ImageSY ( $pImage );
// Copy image
ImageCopyResampled ( $iCanvas , $pImage , 0 , 0 , 0 , 0 , $t_width , $t_height , $s_width , $s_height );
// Return image
return $iCanvas ;
>
?>

Ascent [ at ] WebAQ.com
24-May-2005 01:41

First you need make 0

9 gif format images and background image.

/*
make random image number check
20050524 by ascent WebAQ.com
*/

$rands = rand ( 1000 , 9999 );

session_start ();
$_SESSION [ ‘random_image_number_check’ ] = $rands ;

$bg = ‘./random_image_bg.jpg’ ;
$numimgp = ‘./random_image_number_%d.gif’ ;

$numimg1 = sprintf ( $numimgp , substr ( $rands , 0 , 1 ));
$numimg2 = sprintf ( $numimgp , substr ( $rands , 1 , 1 ));
$numimg3 = sprintf ( $numimgp , substr ( $rands , 2 , 1 ));
$numimg4 = sprintf ( $numimgp , substr ( $rands , 3 , 1 ));
$ys1 = rand (- 4 , 4 );
$ys2 = rand (- 4 , 4 );
$ys3 = rand (- 4 , 4 );
$ys4 = rand (- 4 , 4 );

$bg Img = imageCreateFromJPEG ( $bg );
$nmImg1 = imageCreateFromGIF ( $numimg1 );
$nmImg2 = imageCreateFromGIF ( $numimg2 );
$nmImg3 = imageCreateFromGIF ( $numimg3 );
$nmImg4 = imageCreateFromGIF ( $numimg4 );
imageCopyMerge ( $bg Img , $nmImg1 , 10 , $ys1 , 0 , 0 , 20 , 30 , 50 );
imageCopyMerge ( $bg Img , $nmImg2 , 30 , $ys2 , 0 , 0 , 20 , 30 , 50 );
imageCopyMerge ( $bg Img , $nmImg3 , 50 , $ys3 , 0 , 0 , 20 , 30 , 50 );
imageCopyMerge ( $bg Img , $nmImg4 , 70 , $ys4 , 0 , 0 , 20 , 30 , 50 );
header ( «Content-type: image/jpg» );
ImageJPEG ( $bg Img , «» , 100 );
imagedestroy ( $bg Img );
imagedestroy ( $nmImg1 );
imagedestroy ( $nmImg2 );
imagedestroy ( $nmImg3 );
imagedestroy ( $nmImg4 );
?>

enjoy!
Steve
23-May-2005 10:03

Building upon backglancer’s and stefan’s posts below, the following script will lay a 24-bit PNG watermark over any image.

To prepare a 24-bit watermark, I recommend creating a white logo or text over a transparent background in Photoshop. Save this as a 24-bit PNG via ‘Save for the Web. ‘. Be sure to set the transparency of the logo layer in Photoshop itself. 30-40% is a good setting.

Once the assets are prepared, throw the full or relative server paths at the watermark function below:

function watermark( $sourcefile , $watermarkfile ) <

#
# $sourcefile = Filename of the picture to be watermarked.
# $watermarkfile = Filename of the 24-bit PNG watermark file.
#

//Get the resource ids of the pictures
$watermarkfile _id = imagecreatefrompng( $watermarkfile );

imageAlphaBlending( $watermarkfile _id , false);
imageSaveAlpha( $watermarkfile _id , true);

$fileType = strtolower (substr( $sourcefile , strlen ( $sourcefile )-3));

switch ( $fileType ) <
case (‘gif’):
$sourcefile _id = imagecreatefromgif( $sourcefile );
break;

case (‘png’):
$sourcefile _id = imagecreatefrompng( $sourcefile );
break;

default:
$sourcefile _id = imagecreatefromjpeg( $sourcefile );
>

//Get the sizes of both pix
$sourcefile _width = imageSX ( $sourcefile _id );
$sourcefile _height = imageSY ( $sourcefile _id );
$watermarkfile _width = imageSX ( $watermarkfile _id );
$watermarkfile _height = imageSY ( $watermarkfile _id );

$dest_x = ( $sourcefile _width / 2 ) — ( $watermarkfile _width / 2 );
$dest_y = ( $sourcefile _height / 2 ) — ( $watermarkfile _height / 2 );

// if a gif, we have to upsample it to a truecolor image
if ( $fileType == ‘gif’) <
// create an empty truecolor container
$tempimage = imagecreatetruecolor( $sourcefile _width ,
$sourcefile _height );

// copy the 8-bit gif into the truecolor image
imagecopy ( $tempimage , $sourcefile _id , 0, 0, 0, 0,
$sourcefile _width , $sourcefile _height );

// copy the source_ >int
$sourcefile _id = $tempimage ;
>

imagecopy ( $sourcefile _id , $watermarkfile _id , $dest_x , $dest_y , 0, 0,
$watermarkfile _width , $watermarkfile _height );

//Create a jpeg out of the modified picture
switch ( $fileType ) <

// remember we don’t need gif any more, so we use only png or jpeg.
// See the upsaple code immediately above to see how we handle gifs
case (‘png’):
header («Content-type: image/png»);
imagepng ( $sourcefile _id );
break;

default:
header («Content-type: image/jpg»);
imagejpeg ( $sourcefile _id );
>

imagedestroy ( $sourcefile _id );
imagedestroy ( $watermarkfile _id );

>
backglancer in the hotmail
17-May-2005 01:44

I was about to kill myself.
any one of you trying to merge a SEMI transparent png.
use imagecopy :)

$flag = imagecreatefrompng ( ‘flags/images/flagWhiteFill.png’ );
$mask = imagecreatefrompng ( ‘flags/images/flag_transparent.png’ );

imagealphablending ( $flag , 1 );
imagealphablending ( $mask , 1 );

imagecopy ( $flag , $mask , 0 , 0 , 0 , 0 , 25 , 43 );

Header ( «Content-type: image/jpeg» );
imagepng ( $flag );
?>

ImageSaveAlpha(resource, bool); made the transparent color — not transparent. dunno why :)
barbarina_sv at libero dot it
17-May-2005 12:55

I needed to draw a «pointer» image over a map, but had some problems with png image transparency.
So I created a png image with white background (not transparent) and merged it on my map, after defining white color as transparent:

$src_file = ‘source.jpg’ ;
list ( $src_w , $src_h , $src_t , $src_a ) = getimagesize ( $src_file );

$ptr_file = ‘pointer.png’ ; // must have no transparency, but white background
list ( $ptr_w , $ptr_h , $ptr_t , $ptr_a ) = getimagesize ( $ptr_file );

// destination image dimensions:
$dst_w = 400 ;
$dst_h = 200 ;

// pointer position:
$ptr_x = 195 ;
$ptr_y = 70 ;

$srcImage = imageCreateFromJpeg ( $src_file ) or die ( ‘failed imageCreateFromJpg’ );
$dstImage = imageCreateTrueColor ( $dst_w , $dst_h ) or die ( ‘failed imageCreateTrueColor’ );

imageCopyResampled ( $dstImage , $srcImage , 0 , 0 , 0 , 0 , $dst_w , $dst_h , $src_w , $src_h ) or die ( ‘failed imageCopyResampled’ );

$ptrImage = imageCreateFromPng ( $ptr_file ) or die ( ‘failed imageCreateFromPng’ );

$ptr_w hite = imageColorAllocate ( $ptrImage , 255 , 255 , 255 );
imageColorTransparent ( $ptrImage , $ptr_w hite );

imageCopyMerge ( $dstImage , $ptrImage , $ptr_x , $ptr_y , 0 , 0 , $ptr_w , $ptr_h , 100 ) or die ( ‘failed imageCopyMerge’ );

imageJpeg ( $dstImage , » , 100 ) or die ( ‘failed imageJpeg’ );

imageDestroy ( $srcImage ) or die ( ‘failed imageDestroy (1)’ );
imageDestroy ( $dstImage ) or die ( ‘failed imageDestroy (2)’ );
imageDestroy ( $ptrImage ) or die ( ‘failed imageDestroy (3)’ );

?>

ingrid
05-Apr-2005 01:16

I found on the internet about a thousand copies of this «imageCopyMerge» script of Stefan.

Most of them had a copyright notice of the copyist added, but none of them had added what a starting user of PHP scripting really needs: The lines to be used in a HTML page, where the result of the script will be visible:

$sourcefile = «ORIGFILE.jpg» ;
$insertfile = «watermark.jpg» ;
$targetfile = «foto.jpg» ;
$transition = 30 ;
$pos = 7 ;
require ( «watermark» );
mergePix ( $sourcefile , $insertfile , $targetfile , $pos , $transition );
echo » $targetfile \»>» ;
?>

I was so lucky to get these lines from someone on the internet, after I posted my question all over the world.
Most other people that replied, referred to the bookstore. But I had first read halve the (this) PHP manual, and had not found it.

Just a suggestion, but I know it will help many people getting started with PHP: When you put your scripts here, why not add those few lines needed to incorporate it into a HTML page?
jtacon at php dot net
14-Dec-2004 04:36

This example shows how to use imageCopyMerge to create a water mark function with four random positions (the corners).

function waterMark ( $fileInHD , $wmFile , $transparency = 50 , $jpegQuality = 90 , $margin = 5 ) <

$wmImg = imageCreateFromGIF ( $wmFile );
$jpegImg = imageCreateFromJPEG ( $fileInHD );

// Water mark random position
$wmX = (bool) rand ( 0 , 1 ) ? $margin : ( imageSX ( $jpegImg ) — imageSX ( $wmImg )) — $margin ;
$wmY = (bool) rand ( 0 , 1 ) ? $margin : ( imageSY ( $jpegImg ) — imageSY ( $wmImg )) — $margin ;

// Water mark process
imageCopyMerge ( $jpegImg , $wmImg , $wmX , $wmY , 0 , 0 , imageSX ( $wmImg ), imageSY ( $wmImg ), $transparency );

// Overwriting image
ImageJPEG ( $jpegImg , $fileInHD , $jpegQuality );
>

waterMark ( ‘myImage.jpg’ , ‘waterMark.gif’ );

Javier Tacуn.
claudio dot gaetani at gdldesign dot it
09-May-2004 10:04

This function is intended to serve as an example for the «imageCopyMerge»-«ImageCopyResized», «ImageColorTransparent» functions.
I hope it will help.
This function pick an image, square cut it resampled at the size requested and finishing merge the result with another one to obtain a circular image result. I have a problem to obtain an thumbnail that respect the colors and at the same time where cutted in a circular form, I hope this solution can gives you a clue to obtain a free form images, I use this one also to create multicutted images.

$generalsrc = » $im age » ; //the image to resample, resize and iconaize
$final_thumbwidth = «125» ;
$final_thumbheight = «125» ;

$abc = imagecreatefromjpeg ( » $generalsrc » );
$def = imagecreatetruecolor ( $final_thumbwidth , $final_thumbheight );
$src_mx = round (( imagesx ( $abc ) / 2 )- «0.1» ); // middle x point of the image
$src_my = round (( imagesy ( $abc ) / 2 )- «0.1» ); // middle y point of the image
$src_x = ( $src_mx * 2 );
$src_y = ( $src_my * 2 );
$src_sq = ( $src_x >= $src_y )? $src_y : $src_x ; //used to define the best size for a square cut of the image
$pl = ( $src_x >= $src_y )? «1» : «2» ; //define if the image is portait or landscape
$strt_pntx = ( $pl == «1» )? round (( $src_my / 2 )- «0. 1» ): «0» ; //defines the x start point
$strt_pnty = ( $pl == «2» )? round (( $src_mx / 2 )- «0. 1» ): «0» ; //defines the y start point

imagecopyresized ( $def , $abc , 0 , 0 , $strt_pntx , $strt_pnty , $final_thumbwidth , $final_thumbheight , $src_sq , $src_sq );

$overlay_img = imagecreatefromPNG ( «circle_125.png» ); //NOTE use png for this
$src_w = » ImageSX ( $overlay_img )» ;
$src_h = » ImageSY ( $overlay_img )» ;

$can_img = imagecreatetruecolor ( $src_w , $src_h );

$black = ImageColorAllocate ( $overlay_img , 0 , 0 , 0 );

ImageColorTransparent ( $overlay_img , $black );

imagecopy ( $can_img , $def , 0 , 0 , 0 , 0 , $src_w , $src_h );
imagecopymerge ( $can_img , $overlay_img , 0 , 0 , 0 , 0 , ImageSX ( $overlay_img ), ImageSY ( $overlay_img ), 100 ); //Imagecopy won’t work, you must used imagecopymerge

ImageJPEG ( $can_img , «merge_ $generalsrc » , 100 );

imagedestroy ( $overlay_img );
imagedestroy ( $can_img );
ImageDestroy ( $abc );
ImageDestroy ( $def );

print » test
original: $generalsrc \» w >

start point x = $strt_pntx

start point y = $strt_pnty
» ;
?>

bjorn AT smokingmedia DOT com
26-May-2003 10:10

in addition to stefan’s posting:

i found that if you use imagecopymerge with png-24 files with an alpha channel, it doesn’t work use imagecopy instead.
it seems that imagecopymerge doesn’t respect the alpha channel the way it should (a bug??).

some sample code here to place an image (image.png) on a backgroundcolor or backgroundimage.

$im = «image.png» ;
$bg = «ffddee» ; // hex representation of the color (i.e. #ffffff for white)
$out = «png» ; // or «jpg» for jpg file output
// $backgroundfile = «»; // optional backgroundfile if you don’t want to use a color

//
// function to convert hex colorcode to decimal
//

function colordecode ( $hex ) <

$code [ r ] = hexdec ( substr ( $hex , 0 , 2 ));
$code [ g ] = hexdec ( substr ( $hex , 2 , 2 ));
$code [ b ] = hexdec ( substr ( $hex , 4 , 2 ));

> // end func colordecode

// create the resource id
$im age _id = imageCreateFromPNG ( $im );

// get image size
$im _X = ImageSX ( $im age _id );
$im _Y = ImageSY ( $im age _id );

// create a truecolor background image of the right size
// or use a background image like this
// $backgroundimage = imageCreateFromPNG( $backgroundfile );
$backgroundimage = imagecreatetruecolor ( $im _X , $im _Y );

// get the desired backgroundcolor:
// don’t use this if you want to use a background image
$code = colordecode ( $bg );
$backgroundcolor = ImageColorAllocate ( $backgroundimage , $code [ r ] , $code [ g ] , $code [ b ] );
ImageFilledRectangle ( $backgroundimage , 0 , 0 , $im _X , $im _Y , $backgroundcolor );

// merge the two together with alphablending on!
ImageAlphaBlending ( $backgroundimage , true );
imagecopy ( $backgroundimage , $im age _id , 0 , 0 , 0 , 0 , $im _X , $im _Y );

// output the image:
if ( $out put == «jpg» ) <
Header ( «Content-type: image/jpeg» );
ImageJPEG ( $backgroundimage );
>
else <
Header ( «Content-type: image/png» );
ImagePNG ( $backgroundimage );
>

// destroy the memory
ImageDestroy ( $backgroundimage );
ImageDestroy ( $im age _id );
?>

feisty at feistyenterprises dot com
06-Nov-2002 11:15

Yep, that worked a charm.

Since imageCopyMergeGray() is >for that.

If you want to convert an image to greyscale, use imageCopyMergeGray() with the same image as source and destination, set the pict to 0, et voila!
jonny at sanriowasteland dot net
29-Sep-2002 04:36

If you need to merge 2 png’s (or presumably 2 gifs) with different color palettes, I have found this is the function to use. Just set pct to 99, and you are rocking. With pct set to 100, or imagecopy for that matter, the palette seems to go wonky. (It probably just uses the palette of the source image. but don’t quote me on that).
stefan dot wehowsky at profilschmiede dot de
26-Jul-2001 08:32

This function is intended to serve as an example for the «imageCopyMerge»-all.php?act=funct&argument=
I hope it will help some of the less experienced php-coders here.
I wrote it to mark objects of a real estate broker as «sold» by copying the «sold»-picture right into the picture of the house.

// $sourcefile = Filename of the picture into that $insertfile will be inserted.
// $insertfile = Filename of the picture that is to be inserted into $sourcefile .
// $targetfile = Filename of the modified picture.
// $transition = Intensity of the transition (in percent)
// $pos = Position where $insertfile will be inserted in $sourcefile
// 0 = middle
// 1 = top left
// 2 = top right
// 3 = bottom right
// 4 = bottom left
// 5 = top middle
// 6 = middle right
// 7 = bottom middle
// 8 = middle left
//
//
function mergePix ( $sourcefile , $insertfile , $targetfile , $pos = 0 , $transition = 50 )
<

//Get the resource idґs of the pictures
$insertfile _id = imageCreateFromJPEG ( $insertfile );
$sourcefile _id = imageCreateFromJPEG ( $sourcefile );

//Get the sizes of both pix
$sourcefile _width = imageSX ( $sourcefile _id );
$sourcefile _height = imageSY ( $sourcefile _id );
$insertfile _width = imageSX ( $insertfile _id );
$insertfile _height = imageSY ( $insertfile _id );

//middle
if ( $pos == 0 )
<
$dest_x = ( $sourcefile _width / 2 ) — ( $insertfile _width / 2 );
$dest_y = ( $sourcefile _height / 2 ) — ( $insertfile _height / 2 );
>

//top left
if ( $pos == 1 )
<
$dest_x = 0 ;
$dest_y = 0 ;
>

//top right
if ( $pos == 2 )
<
$dest_x = $sourcefile _width — $insertfile _width ;
$dest_y = 0 ;
>

//bottom right
if ( $pos == 3 )
<
$dest_x = $sourcefile _width — $insertfile _width ;
$dest_y = $sourcefile _height — $insertfile _height ;
>

//bottom left
if ( $pos == 4 )
<
$dest_x = 0 ;
$dest_y = $sourcefile _height — $insertfile _height ;
>

//top middle
if ( $pos == 5 )
<
$dest_x = ( ( $sourcefile _width — $insertfile _width ) / 2 );
$dest_y = 0 ;
>

//middle right
if ( $pos == 6 )
<
$dest_x = $sourcefile _width — $insertfile _width ;
$dest_y = ( $sourcefile _height / 2 ) — ( $insertfile _height / 2 );
>

//bottom middle
if ( $pos == 7 )
<
$dest_x = ( ( $sourcefile _width — $insertfile _width ) / 2 );
$dest_y = $sourcefile _height — $insertfile _height ;
>

//middle left
if ( $pos == 8 )
<
$dest_x = 0 ;
$dest_y = ( $sourcefile _height / 2 ) — ( $insertfile _height / 2 );
>

//The main thing : merge the two pix
imageCopyMerge ( $sourcefile _id , $insertfile _id , $dest_x , $dest_y , 0 , 0 , $insertfile _width , $insertfile _height , $transition );

//Create a jpeg out of the modified picture
imagejpeg ( $sourcefile _id , » $targetfile » );

Разница между imagecopy()’ и ‘imagecopymerge()’? [закрытый]

в чем разница между этими 2 функциями из библиотеки PHP GD?

3 ответов

эти две функции очень похожи в том, что они копируют одно изображение в другое.

отличие этих функций заключается в последнем параметре: imagecopy() всегда перезаписывает все пиксели в месте назначения с пикселями источника, тогда как imagecopymerge() объединяет пиксели назначения с пикселями источника на величину, указанную в дополнительном параметре:

на эквивалентна вызову imagecopymerge() и проходить в 100 как последний параметр.

два изображения будут объединены в соответствии с pct, который может варьироваться от 0 до 100. Когда pct = 0, никакое действие не принято, когда 100 эта функция аналогично imagecopy() на палитру изображения, а реализует Альфа-прозрачность для изображений истинного цвета.

речь идет о прозрачно смешивания два изображения Вместе против простого копирования.

imagecopymerge посмотреть pct arg описание

два изображения будут объединены в соответствии с pct, который может варьироваться от 0 до 100. Когда pct = 0, никакое действие не принято, когда 100 эта функция ведет себя идентично imagecopy() для изображений паллета, за исключением игнорирование Альфа-компонентов, в то время как он реализует Альфа-прозрачность для изображения истинного цвета.

Разница между ‘imagecopy ()’ и ‘imagecopymerge ()’? [закрыто]

December 2020

3.3k раз

В чем разница между этими 2 функциями из библиотеки PHP GD?

3 ответы

imagecopymerge выглядеть проц описание Arg

Два изображения будут объединены в соответствии с РСТ, которое может составлять от 0 до 100. При РСТ = 0, никаких действий не предпринимается, когда 100 эта функция ведет себя идентично imagecopy () для Pallete изображений, за игнорирование альфа-компоненты, за исключением, в то время как он реализует альфа-прозрачность для полноцветных изображений.

Два изображения будут объединены в соответствии с РСТ, которое может составлять от 0 до 100. При РСТ = 0, никаких действий не предпринимается, когда 100 эта функция ведет себя идентично imagecopy () для Pallete изображений, в то время как он реализует альфа-прозрачность для истинных цветных изображений ,

Это о прозрачном смешивание двух изображений вместе против просто копировать-наклеивать поверх.

Эти две функции являются весьма схожи в том, что они копируют одну картинку в другую.

Как эти функции отличаются в последнем параметре: imagecopy() всегда переписывает все пиксели в пункте назначения с теми из источника, в то время как imagecopymerge() сливает пиксели назначения с источником пикселей на сумму , указанную в дополнительном параметре:

imagecopy() Функция поэтому эквивалентна вызову imagecopymerge() и переходя в 100 в качестве последнего параметра.

Добавление некоторых непрозрачность изображения с imagecopymerge в PHP

Вот моя проблема:

Я хочу, чтобы изменить прозрачность изображения, путем копирования его на другое прозрачное изображение.

Делая это, когда я использую imagecopymerge, $ transparentImage теряет прозрачность. Так что $ изображения слиты на черном изображение. и не на прозрачном изображение!

Однако, когда я показываю $ transparentImage перед вызовом imagecopymerge, изображение является прозрачным в моем навигаторе!

Есть ли решение, чтобы изменить непрозрачность моих изображений без добавления его на цветной фоне?

1 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Что такое код imagecopymerge

34 просмотра

1 ответ

374 Репутация автора

Это можно увидеть на странице, которую я использую . Как видите, глаза не голубые, черная одежда не черная (она цветная) и т. Д.

Цвета наложения меняются, чтобы соответствовать фону, и это не то, что я хочу. Как я могу это исправить?

Ответы (1)

плюса

374 Репутация автора

Градиентное изображение @createimage не используется createimagetruecolor . Вот почему цвета были преобразованы.

Что такое код imagecopymerge

34 просмотра

1 ответ

374 Репутация автора

Это можно увидеть на странице, которую я использую . Как видите, глаза не голубые, черная одежда не черная (она цветная) и т. Д.

Цвета наложения меняются, чтобы соответствовать фону, и это не то, что я хочу. Как я могу это исправить?

Ответы (1)

плюса

374 Репутация автора

Градиентное изображение @createimage не используется createimagetruecolor . Вот почему цвета были преобразованы.

Илон Маск рекомендует:  Тег dl
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL