2010-09-02 36 views
6

Potrzebuję tego samego wyjścia z Inkscape i Imagick.Imagick nie renderuje prawidłowo svg

To jest oczekiwany wynik, wyeksportowany z Inkscape.

corect image

Jednakże kod PHP poniżej wyjścia następujące wadliwy wynik.

wrong image

kod PHP: Kod

<?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

Dlaczego musisz używać Imagick? Jest to łatwiejsze w przypadku prawdziwych programów SVG. – jmz

+0

Próbowałem go na Windows 7 64bit 2.3.0 sam problem. Na Linuksie z 3.1 działa tak, jak powinien. – RedRoosterMobile

Odpowiedz

0

Jest to już poprawione w aktualnej wersji Imagick.

1

Jaka wersja PHP i ImageMagick są uruchomione? Udostępnij odpowiednią wartość wyjściową phpinfo(). Czy może wpłynąć na ciebie this ImageMagick bug? Lub jeśli nie jesteś na bieżąco, czy może mieć wpływ inny błąd związany z ImageMagic?

EDIT: Nie mam łatwy dostęp do serwera z biblioteki ImageMagick PHP, zainstalowanych w tej chwili, ale jeśli znajdę jedną, będę testować kod podany i pisać moje wyniki.

EDIT2: Wygląda others have the same issue, chyba że forum post był także twój ...

Według this forum post, można spróbować:

$im->setImageFormat("png32"); 

Jedna osoba poinformował, że pracuje, ale inny powiedział to nie ...

+0

Wersja PHP => 5.3.2-1ubuntu4.2 wersja modułu graficznego => 2.1.1-rc1 –

+0

@Jan: Dzięki. Opublikowalem kilka dodatkowych sugestii. Czy to jest PHP/zdjęcie, które jest zainstalowane przez "apt-get" Ubuntu? Jaką wersję Ububtu? Mogę skonfigurować maszynę wirtualną i wypróbować to dla ciebie po mojej stronie. Często przebywam w [pokoju czatu PHP] (http://chat.meta.stackoverflow.com/rooms/60/php), jeśli chcesz to omówić. – Josh

+0

używam Ubuntu 10.04 lucid Lynx, imagick i php zostały zainstalowane przez synaptic (apt frontend). Przetestowałem go również na hostingu w PHP w wersji 5.3.3 i wersji modułu imagick 2.3.0 –

0

Inkscape używa niezbyt dobrze obsługiwanej właściwości opacity. Zamiast tego użyj fill-opacity i stroke-opacity.

+0

Warto wiedzieć, ale próbowałem zastąpić krycie nieprzezroczystością wypełnienia i nie ma to wpływu na ten przykład. – JMacArthur

Powiązane problemy