2012-02-13 34 views
5

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:

enter image description here

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);    
+1

Cách đăng mã của bạn. Chỉ cần đoán, nhưng điều đó có thể hữu ích. –

+0

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

+0

đă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

Trả lời

2

Tôi không hoàn toàn biết làm thế nào kịch bản của bạn hoạt động, nhưng không thể bạn chỉ cần lặp lại thêm hình mờ ở khoảng thời gian cố định cho đến khi bạn đã bao phủ toàn bộ chiều rộng của hình ảnh?

+0

rằng dường như không quá hiệu quả, nhưng nó là một lựa chọn tôi giả sử – Ronnie

Các vấn đề liên quan