Dalam artikel sebelumnya, saya membawakan anda "Bagaimana untuk mengezum dan memangkas imej dalam PHP? (Penjelasan terperinci tentang contoh) 》, yang memperkenalkan cara mengezum dan memangkas grafik dalam PHP melalui contoh Artikel ini terus melihat pengetahuan pemprosesan grafik dalam PHP dan bagaimana kita harus menambah tera air. Semoga ia membantu semua orang!
Dalam kehidupan seharian kita, untuk mengelakkan gambar kita dicuri, kita sering melihat tera air ditambah pada beberapa gambar Contohnya, di laman web kita, masukkan fail gambar Tera air akan ditambahkan secara automatik ke sudut kanan bawah Jadi bagaimana kesan tera air ini dicapai? Kesan penambahan tera air pada imej boleh dicapai melalui PHP.
Dalam artikel sebelumnya, operasi memotong imej dan meletakkannya pada imej sasaran adalah agak serupa dengan menambah tera air, anda perlu menggunakan fungsi imagecopymerge.
<strong><span style="font-size: 18px;">imagecopymerge</span></strong>
Fungsi
Format sintaks fungsi imagecopymerge adalah seperti berikut:
imagecopymerge($目标图片,$来源图片,$目标开始的x ,$目标开始的y,$来源的x ,$来源的y ,$来源的宽 ,$来源的高 ,$透明度)
Nilai ketelusan ialah 0 -100 ialah integer Lebih besar nilai ketelusan, lebih legap tera air.
Seterusnya, mari kita lihat cara menambah tera air pada imej melalui contoh:
Mula-mula, sediakan imej bernama test.png dan tera air bernama logo.png Imej diletakkan dalam direktori akar kami
Perhatikan bahawa di atas adalah contoh imej, tera air di bawah tidak saya tambahkan, ia ditambah secara automatik oleh laman web, untuk membezakan , tera air contoh adalah seperti berikut
Kemudian, operasi adalah seperti berikut:
<?php //打开目标图片 $dst = imagecreatefrompng('test.png'); //打开Logo来源图片 $src = imagecreatefrompng('logo.png'); //得到目标图片的宽高 $dst_info = getimagesize('test.png'); //得到logo图片的宽高 $src_info = getimagesize('logo.png'); //放到最右下脚可得出图片水印图片需要开始的位置即: //x点位置:需要大图的宽 - 小图的宽; //y点位置:放大图的高 - 小图的高 $dst_x = $dst_info[0] - $src_info[0]; $dst_y = $dst_info[1] - $src_info[1]; //要将图片加在右下脚 imagecopymerge($dst, $src, $dst_x, $dst_y, 0, 0, $src_info[0], $src_info[1], 50); header('Content-type:image/png'); imagepng($dst); imagedestroy($dst); imagedestroy($src); ?>
Hasil keluaran:
Seperti yang dapat dilihat daripada hasil di atas, tera air dengan ketelusan 50 ditambah melalui fungsi imagecopymerge.
Perluaskan pengetahuan<strong><span style="font-size: 18px;">imagecopy</span></strong>
salinan imej
imagecopy()
imagecopy($目标图片, $来源图片,$目标图片x,$目标图片y,$来源图片x,$来源图片y,$来源图片宽,$来源图片高)
, yang boleh menyalin sebahagian daripada fungsi tersebut adalah seperti berikut:
Maksudnya ialah memilih kawasan segi empat tepat dengan lebar w dan tinggi h dari (x, y) imej sumber kepada (x, y) imej sasaran.
imagesx(resource $image) imagesy(resource $image)
Gunakan fungsi imagesx() dan imagesy() dalam PHP untuk mendapatkan lebar dan tinggi imej masing-masing. Format sintaks mereka adalah seperti berikut:
<?php function watermark($img, $watermark, $district = 0,$watermarkquality = 95){ $imginfo = @getimagesize($img); $watermarkinfo = @getimagesize($watermark); $img_w = $imginfo[0]; $img_h = $imginfo[1]; $watermark_w = $watermarkinfo[0]; $watermark_h = $watermarkinfo[1]; if($district == 0) $district = rand(1,9); if(!is_int($district) OR 1 > $district OR $district > 9) $district = 9; switch($district){ case 1: $x = +5; $y = +5; break; case 2: $x = ($img_w - $watermark_w) / 2; $y = +5; break; case 3: $x = $img_w - $watermark_w - 5; $y = +5; break; case 4: $x = +5; $y = ($img_h - $watermark_h) / 2; break; case 5: $x = ($img_w - $watermark_w) / 2; $y = ($img_h - $watermark_h) / 2; break; case 6: $x = $img_w - $watermark_w; $y = ($img_h - $watermark_h) / 2; break; case 7: $x = +5; $y = $img_h - $watermark_h - 5; break; case 8: $x = ($img_w - $watermark_w) / 2; $y = $img_h - $watermark_h - 5; break; case 9: $x = $img_w - $watermark_w - 5; $y = $img_h - $watermark_h - 5; break; } switch ($imginfo[2]) { case 1: $im = @imagecreatefromgif($img); break; case 2: $im = @imagecreatefromjpeg($img); break; case 3: $im = @imagecreatefrompng($img); break; } switch ($watermarkinfo[2]) { case 1: $watermark_logo = @imagecreatefromgif($watermark); break; case 2: $watermark_logo = @imagecreatefromjpeg($watermark); break; case 3: $watermark_logo = @imagecreatefrompng($watermark); break; } if(!$im or !$watermark_logo) return false; $dim = @imagecreatetruecolor($img_w, $img_h); if(@imagecopy($dim, $im, 0, 0, 0, 0,$img_w,$img_h )){ imagecopy($dim, $watermark_logo, $x, $y, 0, 0, $watermark_w, $watermark_h); } $file = dirname($img) . '/w' . basename($img); $result = imagejpeg ($dim,$file,$watermarkquality); imagedestroy($watermark_logo); imagedestroy($dim); imagedestroy($im); if($result){ echo $img.' 水印添加成功'; return; } else { return false; } } $file = 'test.png'; //待加水印的图片地址 $water = 'logo.png'; //水印图片的地址 watermark($file, $water); ?>
Hasil keluaran:
Kesannya adalah seperti berikut:
Pembelajaran yang disyorkan: "Tutorial Video PHP"Atas ialah kandungan terperinci Anda mesti faham cara menambah tera air imej dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!