simenss Skrevet 20. mai 2004 Del Skrevet 20. mai 2004 Jeg skal lage et lite bilderedigeringsprogram i PHP, men har støtt på et lite problem. Hvordan kan jeg for eksempel sette inn et lite GIF-bilde (for eksempel en hatt) over et annet JPEG-bilde, når jeg har X og Y koordinatene? Har sett litt rundt på php.net, men finner ingen image-funksjoner som passer Lenke til kommentar
???????? Skrevet 20. mai 2004 Del Skrevet 20. mai 2004 Jo da, denne passer: http://no2.php.net/manual/en/function.imagecopymerge.php se spesielt på den nederste kommentaren! Lenke til kommentar
simenss Skrevet 20. mai 2004 Forfatter Del Skrevet 20. mai 2004 Mulig jeg er helt dum, men gjore noen små endringer med det fungere ikke som det skal. Sitterer fra han som skrev scriptet: I hope it will help some of the less experienced php-coders here.. Skjønner jeg fortsatt har mye å lære! Skulle også helst slippe å lagre bildet som en ny fil, men at PHP-filen kun viste bildet. mur.jpg: briller.gif: <?php //$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 // // $sourcefile = "mur.jpg"; $insertfile = "briller.gif"; $targetfile = "ny.jpg"; 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 header("Content-type: image/jpeg"); imagejpeg($sourcefile_id,"$targetfile"); } ?> Lenke til kommentar
???????? Skrevet 20. mai 2004 Del Skrevet 20. mai 2004 Dersom du kun skal lime inn det ene bildet på det andre kan du bruke noe som dette: <?php $bildet = "mur.jpg"; $over = "briller.gif"; $im = imagecreatefromjpeg($bildet); $im_over = imagecreatefromgif($over); imagecopy($im, $im_over, 0, 0, 0, 0,imagesx($im_over), imagesy($im_over)); imagedestroy($im_over); header("Content-type: image/jpeg"); imagejpeg($im); imagedestroy($im); ?> NB: det er klippet og limt rett fra manualen, så det er IKKE testet! Husk å endre plasseringen på bildet du limer inn Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå