2010-09-02 39 views
6

Tôi cần cùng một đầu ra từ Inkscape và Imagick.Imagick không hiển thị đúng độ mờ svg

Đây là kết quả mong đợi, được xuất từ ​​Inkscape.

corect image

Tuy nhiên, mã PHP dưới đây kết quả đầu ra kết quả bị lỗi sau đây.

wrong image

mã PHP: Mã

<?php 
$im = new Imagick(); 

$im->setResolution(400,400); 
$im->setBackgroundColor(new ImagickPixel('transparent')); 
$im->readImageBlob(str_replace(array("color1", "color2"), array("yellow", "blue"), file_get_contents("img.svg"))); 

$im->setImageFormat("png"); 
header("Content-type: image/png"); 
echo $im; 
?> 

SVG:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="400" height="400"> 
<rect width="100%" height="100%" fill="green" /> 
<path d="M250 150 L150 350 L350 350 Z" opacity="0.9" fill="color1" /> 
<path d="M150 50 L50 250 L250 250 Z" opacity="0.9" fill="color2" /> 
</svg> 
+0

Tại sao bạn cần sử dụng Imagick? Nó dễ dàng hơn với các chương trình SVG thực. – jmz

+0

Tôi đã thử nó trên Windows 7 64bit 2.3.0 cùng một vấn đề. Trên Linux với 3.1 nó hoạt động như nó nên. – RedRoosterMobile

Trả lời

0

Điều này đã được khắc phục trong phiên bản hiện tại của Imagick.

1

Phiên bản nào của PHP và ImageMagick bạn có đang chạy? Vui lòng chia sẻ kết quả có liên quan của phpinfo(). Có thể this ImageMagick bug ảnh hưởng đến bạn không? Hoặc nếu bạn không cập nhật, một lỗi ImageMagic khác có thể ảnh hưởng đến bạn không?

EDIT: Tôi không có quyền truy cập dễ dàng vào máy chủ có thư viện ImageMagick của PHP được cài đặt tại thời điểm này, nhưng nếu tôi tìm thấy, tôi sẽ kiểm tra mã được cung cấp và đăng kết quả của tôi.

EDIT2: Hình như others have the same issue, trừ khi đó bài diễn đàn cũng là bạn ...

Theo this forum post, bạn có thể thử:

$im->setImageFormat("png32"); 

Một người cho biết làm việc, nhưng khác nói nó không ...

+0

Phiên bản PHP => 5.3.2-1ubuntu4.2 phiên bản mô-đun tưởng tượng => 2.1.1-rc1 –

+0

@Jan: Cảm ơn. Tôi đã đăng một vài đề xuất khác. Đây có phải là kho PHP/imagick được cài đặt thông qua 'apt-get' của Ubuntu không? Phiên bản nào của Ububtu? Tôi có thể thiết lập một máy ảo và thử điều này cho bạn vào cuối của tôi. Tôi thường ở trong [phòng chat PHP] (http://chat.meta.stackoverflow.com/rooms/60/php) nếu bạn muốn nói chuyện này thông qua. – Josh

+0

tôi sử dụng ubuntu 10.04 lucid lynx, imagick và php được cài đặt bởi synaptic (apt frontend). Tôi cũng đã thử nghiệm nó trên lưu trữ với phiên bản PHP 5.3.3 và phiên bản mô-đun imagick 2.3.0 –

0

Inkscape sử dụng thuộc tính opacity không được hỗ trợ phổ biến. Sử dụng fill-opacitystroke-opacity để thay thế.

+0

Đáng biết, nhưng tôi đã thử thay thế độ mờ đục bằng độ mờ đục và nó không tạo sự khác biệt cho ví dụ này. – JMacArthur

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