Jump to content
php.lv forumi

izveidot watermark uz bildes ar caurumiem


ray

Recommended Posts

Man ir png bilde, kurā ir caurumi, mēģinu ar gd uzlikt to bildi pa virsu, bet tajos caurumos nerāda apakšējo attēlu, kur kodā varētu būt kļūda?

 

$jpg = "1.jpg";
$png = "2.png";
$dest_x = 0;
$dest_y = 0;  
$watermark = imagecreatefrompng($png);  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark);  
$image = imagecreatetruecolor($watermark_width, $watermark_height);  
$image = imagecreatefromjpeg($jpg);  
$size = getimagesize($jpg);  
imagecopymerge($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height, 100);  
imagepng($image, "jaunais_fails.jpg");  

imagedestroy($image);  
imagedestroy($watermark);  
echo "<img src=\"jaunais_fails.jpg\">";

Edited by ray
Link to comment
Share on other sites

Paarveidoju kodu, bet tik un taa taa bilde ir tik liela cik $jpg, nevis $png, kur varētu būt kļūda?

$jpg = "1.jpg"; // izmeers 160x102
$png = "2.png"; //izmeers 208x120
$dest_x = 0;
$dest_y = 0;  
$watermark = imagecreatefrompng($png);  
$watermark_width = imagesx($watermark);  
$watermark_height = imagesy($watermark);  
$image = imagecreatetruecolor($watermark_width, $watermark_height);  
$image = imagecreatefromjpeg($jpg);
ImageAlphaBlending($image, true); 
imagecopyresized($image, $watermark, $dest_x, $dest_y, 0, 0, 208, 120, $watermark_width, $watermark_height); 
imagepng($image, "jaunais_fails.png");  

imagedestroy($image);  
imagedestroy($watermark);  
echo "<img src=\"jaunais_fails.png\">";

Edited by Rich Bitch
Link to comment
Share on other sites

Triks slēpjas faktā, ka tu itkā izveido watermark lieluma bildi, bet tūlīt pēc tam to pārdefinē par jpg izmēriem atbilstošo bildi, izveidojot jaunu bildes resursu pa taisno no jpg faila:

$image = imagecreatetruecolor($watermark_width, $watermark_height);  
$image = imagecreatefromjpeg($jpg);

 

Attiecīgi arī tu uzreiz pazaudē gala rezultāta bildes izmērus. Vienkāršākais variants būtu nosaukt savādāk $image mainīgo, kurā tu iebāz to jpg bildi un pēc tam to jpg bildi uzkopēt uz $image, aptuveni šādi (nepārbaudīju, tāpēc skaties vai nav kļūdas pats)

 

$image = imagecreatetruecolor($watermark_width, $watermark_height);
$image2 = imagecreatefromjpeg($jpg);
imagecopyresampled($image, $image2, 0, 0, 0,0,$watermark_width, $watermark_height, 160, 102);

 

un tālāk jau aiziet tas tavs paša kods:

ImageAlphaBlending($image, true);
//....

Link to comment
Share on other sites

×
×
  • Create New...