PDA

View Full Version : سوال: مشکل این کد کجاست؟ تابع imagecopymerge



amiragha2
جمعه 06 دی 1392, 09:42 صبح
سلام
من این کد رو برای آپلود تصویر نوشتم، اما می خوام یه واترمارک بهش اضافه کنم.
همه ی قسمتاش درسته، و کار می کنه اما واترمارک باهاش ادغام نمی شه.


<meta charset="utf-8"/>
<?php
<meta charset="utf-8"/>
<?php


$types=array('image/jpeg','image/gif','image/png');
//echo in_array('image/gif', $types);
//
$water=imagecreatefrompng('water.png');
$photo1=&$_FILES['photo'];
if($photo1['error']==0 && $photo1['size']<5000000 && in_array($photo1['type'],$types)):
$src=null;
switch ($photo1['type']){
case 'image/jpeg':
$src= imagecreatefromjpeg($photo1['tmp_name']);
break;
case 'image/gif':
$src=imagecreatfromgif($photo1['tmp_name']);
break;
case 'image/png':
$src=imagecreatefrompng($photo1['tmp_name']);
break;
case 'image/wbmp':
$src= imagecreatfromwbmp($photo1['tmp_name']);
break;
}
if($src!=null){
$h= imagesy($src);
$w= imagesx($src);
$dst= imagecreatetruecolor($w, $h);
imagecopy($dst, $src, 0, 0, 0, 0, $w, $h);
}

do{
$name=time();
sleep(1);
}while (file_exists($name.'.'. '.jpg'));
imagecopymerge($water, $src, 0, 0, 0, 0, $w, $h, 100);
imagejpeg($dst,$name.'.jpg');


imagedestroy($src);
imagedestroy($dst);

echo "succes";
else:
echo "failed";

endif;

MMSHFE
جمعه 06 دی 1392, 10:49 صبح
منظورتون رو از اینکه ادغام نمیشه دقیقتر بگین. اصلاً نشون نمیده یا اینه پس زمینه براش میگذاره؟

amiragha2
جمعه 06 دی 1392, 13:06 عصر
اصلا نشون نمی ده دیگه، همون تصویر اولیه رو که بدون کد merg هم ساخته می شه ، می سازه.

MMSHFE
جمعه 06 دی 1392, 14:45 عصر
نه ببینید، شما باید water$ رو به dst$ اضافه کنید:

imagecopymerge($dst, $water, 0, 0, 0, 0, $w, $h, 100);

amiragha2
جمعه 06 دی 1392, 21:52 عصر
بسیار متشکر.درست شد اما یه سری مشکل داره ، مثلا اگه تصویر واترمارکم ترنسپرنت باشه ، کلا سیاه می شه و درب و داغون.
و همچنین این خاصیت opt که ته تابع image merg هست ، در واقع اوپاسیتی تصویر زیرین هست نه تصویر واتر مارک

MMSHFE
جمعه 06 دی 1392, 22:15 عصر
باید از توابع imagesavealpha و imagealphablending استفاده کنید.