2012-03-26 39 views
8

Các mã sau đây hoạt động trên máy tính xách tay của tôi, nhưng không hoạt động trên máy chủ từ xa:Crop trong vòng tròn (php)

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

$filename = "../../content/".base64_decode($_GET["file"]); 


$ext = pathinfo($filename, PATHINFO_EXTENSION); 

if ($ext=="jpg" || $ext=="jpeg") { 
$image_s = imagecreatefromjpeg($filename); 
} else if ($ext=="png") { 
$image_s = imagecreatefrompng($filename); 
} 

$width = imagesx($image_s); 
$height = imagesy($image_s); 


$newwidth = 285; 
$newheight = 232; 

$image = imagecreatetruecolor($newwidth, $newheight); 
imagealphablending($image,true); 
imagecopyresampled($image,$image_s,0,0,0,0,$newwidth,$newheight,$width,$height); 

// create masking 
$mask = imagecreatetruecolor($width, $height); 
$mask = imagecreatetruecolor($newwidth, $newheight); 



$transparent = imagecolorallocate($mask, 255, 0, 0); 
imagecolortransparent($mask, $transparent); 



imagefilledellipse($mask, $newwidth/2, $newheight/2, $newwidth, $newheight, $transparent); 



$red = imagecolorallocate($mask, 0, 0, 0); 
imagecopy($image, $mask, 0, 0, 0, 0, $newwidth, $newheight); 
imagecolortransparent($image, $red); 
imagefill($image,0,0, $red); 

// output and free memory 
header('Content-type: image/png'); 
imagepng($image); 
imagedestroy($image); 
imagedestroy($mask); 
?> 

Nó cho thấy hình ảnh sau trên máy tính xách tay của tôi: http://i.stack.imgur.com/Aai1r.png

Và đây là cách hiển thị trên máy chủ từ xa: http://i.stack.imgur.com/77fbV.png

Bạn nghĩ sao? Vấn đề là gì?

+2

Bạn có các phiên bản GD khác nhau trên máy chủ của bạn không? Đó gần như chắc chắn là vấn đề. Nó cũng có thể được liên kết với sự minh bạch. – haltabush

+0

env địa phương có phiên bản GD 2.0 và trên máy chủ 2.0.38. Cả hai đều hỗ trợ tính minh bạch. –

Trả lời

11

Thay đổi dòng:

imagecopy($image, $mask, 0, 0, 0, 0, $newwidth, $newheight); 

tới:

imagecopymerge($image, $mask, 0, 0, 0, 0, $newwidth, $newheight,100); 
0

Tôi nghĩ bạn có thể gặp sự cố với filepath. Kiểm tra xem pathinfo trả về mở rộng hợp lệ và thêm sau khi khai báo $ filename một cái gì đó để kiểm tra xem nó tồn tại và có thể đọc được

if(!is_file($file) || !is_readable($file)){ die('Readable file not found');} 
+0

Filepath là OK. –

1

Tôi nghĩ rằng một đọc cơ bản về cách để gỡ lỗi http://blog.regehr.org/archives/199 sẽ hữu ích đối với bạn, và giúp bạn giải quyết của bạn vấn đề

+0

một viên ngọc như vậy sẽ bị mất trong một bình luận. TY, đọc khá thú vị. – YvesLeBorg