Tôi đã tạo một tập lệnh có thêm hình mờ ở trên cùng của hình ảnh hiện có bằng cách sử dụng PHP. Điều đó hoạt động tốt. Tôi có thể định vị nó ở trên cùng bên trái, dưới cùng bên trái, trên cùng bên phải, dưới cùng bên phải và căn giữa. Tôi đã không thể tìm ra cách lặp lại hình mờ nếu tôi muốn.Làm cách nào để lặp lại hình ảnh mờ với GD và PHP?
Tôi muốn làm một watermark lặp lại như hình ảnh này:
Mã:
function imagecopymerge_alpha($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h, $pct){
// creating a cut resource
$cut = imagecreatetruecolor($src_w, $src_h);
// copying relevant section from background to the cut resource
imagecopy($cut, $dst_im, 0, 0, $dst_x, $dst_y, $src_w, $src_h);
// copying relevant section from watermark to the cut resource
imagecopy($cut, $src_im, 0, 0, $src_x, $src_y, $src_w, $src_h);
// insert cut resource to destination image
imagecopymerge($dst_im, $cut, $dst_x, $dst_y, 0, 0, $src_w, $src_h, $pct);
}
$imagesource = $image['file_path'];
$watermarkPath = $settings['watermark'];
$filetype = substr($imagesource,strlen($imagesource)-4,4);
$filetype = strtolower($filetype);
$watermarkType = substr($watermarkPath,strlen($watermarkPath)-4,4);
$watermarkType = strtolower($watermarkType);
// Let's pretend that $watermark and $image are now GD resources.
$imagewidth = imagesx($image);
$imageheight = imagesy($image);
$watermarkwidth = imagesx($watermark);
$watermarkheight = imagesy($watermark);
switch ($settings['watermark_location'])
{
case "tl": //Top Left
$startwidth = 20;
$startheight = 20;
break;
case "bl": //Bottom Left
$startwidth = 20;
$startheight = (($imageheight - $watermarkheight) - 20);
break;
case "tr": //Top Right
$startwidth = (($imagewidth - $watermarkwidth) - 20);
$startheight = 20;
break;
case "br": //Bottom Right
$startwidth = (($imagewidth - $watermarkwidth) - 20);
$startheight = (($imageheight - $watermarkheight) - 20);
break;
case "middle": //Middle/center
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
break;
case "repeat":
// not sure what to do here
break;
default:
$startwidth = (($imagewidth - $watermarkwidth)/2);
$startheight = (($imageheight - $watermarkheight)/2);
}
imagecopymerge_alpha($image, $watermark, $startwidth, $startheight, 0, 0, $watermarkwidth, $watermarkheight,$settings['watermark_opacity']);
imagejpeg($image,NULL,90);
imagedestroy($image);
imagedestroy($watermark);
Cách đăng mã của bạn. Chỉ cần đoán, nhưng điều đó có thể hữu ích. –
Chúng tôi hoàn toàn cần xem mã bạn đang sử dụng để chúng tôi có thể cung cấp cho bạn các đề xuất về cách lặp lại hình mờ. – Charles
đăng một pastie..its một tấn mã..chỉ tập trung vào trường hợp chuyển đổi khoảng 70 dòng xuống – Ronnie