Gå til innhold

Plassere et bilde over et annet


Anbefalte innlegg

Skrevet

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 :(

Videoannonse
Annonse
Skrevet

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! :yes: Skulle også helst slippe å lagre bildet som en ny fil, men at PHP-filen kun viste bildet.

 

mur.jpg:

mur.jpg

 

briller.gif:

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"); 
} 
?>

Skrevet

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...