Nasıl bir filigran gibi PHP bir görüntü üzerine bir görüntü ekleyebilirsiniz

2 Cevap php

Ben bir görüntü çekmek ve görüntünün üstüne bir filigran tip resmi uygulamak için küçük bir php fonksiyon yazmak çalışıyorum ve onları 1 resim olarak kaydedin, bu kod 0 hata ile çalışır ancak filigran görüntüsü uygulamak değildir, bariz bir şey var mı bu yüzden böyle olmaz üzerinde Stants?

<?PHP
$source_file_path ='http://cache2.mycrib.net/images/image_group92/0/43/653807d5727a46498180e8ef57fdf7819b2b0c.jpg';
$watermark_image='fpwatermark.gif'; // the watermark image
$destination_image ='coooolgif.gif'; // where to save new file

$imagesize = getimagesize($destination_image);
$watermarksize = getimagesize($watermark_image);
$watermark_x = $imagesize[0] - $watermarksize[0] - 2;
$watermark_y = $imagesize[1] - $watermarksize[1] - 2;

//run function
watermark_img($watermark_image, $destination_image, $watermark_x, $watermark_y, $watermark_w, $watermarksize[0], $watermarksize[1], $source_file_path);


function watermark_img($watermark_src, $image_src, $watermark_x, $watermark_y, $watermark_w,$watermark_h, $source_file_path) {
    //Determine what type of image we're working with
    list($width, $height, $type) = getimagesize($image_src);
    $image_ext = $type;
    switch (strtolower($image_ext)) {
    		#gif
    	case 1:
    		$image = imagecreatefromgif($image_src);
    		break;
    		#jpg
    	case 2:
    		$image = imagecreatefromjpeg($image_src);
    		imageAlphaBlending($image, true);
    		break;
    		#png
    	case 3:
    		$image = imagecreatefrompng($image_src);
    		imageAlphaBlending($image, true);
    		break;
    	default:
    		return false;
    }
    //Create an instance of the watermark in memory
    if (!($watermark = imagecreatefromgif($watermark_src)))
    	return false; //Make sure your Watermark is a GIF
    //Add watermark to the image
    if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
    	$watermark_h)))
    	return false;
    //Resave the image with the watermark now in place
    if (!(imagejpeg($image, $image_src)))
    	return false;
    //Destroy instaces of images to free up RAM
    imagedestroy($image);
    imagedestroy($watermark);
    //Apparently everything went well.
    return $image_ext;
}
?>

2 Cevap

Bunu değiştirmek gerekir düşünüyorum (burada basit bir öğretici olduğunu http://www.cafewebmaster.com/image-watermark-php):

//Add watermark to the image
if (!(imagecopy($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
    $watermark_h)))

ile:

//Add watermark to the image
if (!(imagecopymerge($image, $watermark, $watermark_x, $watermark_y, 0, 0, $watermark_w,
    $watermark_h, 100)))

veya kullanım wideImage ;)

http://www.sitepoint.com/article/watermark-images-php/: İşte saydam PNG görüntü kullanılarak bir filigran onu yapmak için nasıl bir öğretici bulunuyor

Bunu daha önce de kullandım ve o inşaat. Var kodu ile sorun bir jpeg oluşturmak için çalışıyoruz, ancak dosya uzantısı bir gif, bu yüzden doğru render değil muhtemelen. Ama yanlış olabilir.

Sadece son bir görüntü kaydetme değilse, o klasörde sadece bir izinleri sorun. Bu durumda, büyük olasılıkla chmod üzerinden 777 klasörü ayarlamak zorunda.