2010-09-02 17 views
6

Necesito la misma salida de Inkscape e Imagick.Imagick no muestra la opacidad svg correctamente

Este es el resultado esperado, exportado de Inkscape.

corect image

Sin embargo, el código PHP a continuación da salida a la siguiente resultado defectuosa.

wrong image

código PHP: Código

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

¿Por qué necesita usar Imagick? Es más fácil de hacer con programas SVG reales. – jmz

+0

Lo probé en Windows 7 64bit 2.3.0 mismo problema. En Linux con 3.1 funciona como debería. – RedRoosterMobile

Respuesta

0

Esto ya está solucionado en la versión actual de Imagick.

1

¿Qué versión de PHP y ImageMagick se ejecuta? Por favor, comparta la salida relevante de phpinfo(). ¿Te puede afectar this ImageMagick bug? O si no estás actualizado, ¿podría otro error de ImageMagic afectarte?

EDIT: No tengo acceso fácil a un servidor con las bibliotecas de ImageMagick de PHP instaladas en este momento, pero si encuentro una, probaré el código proporcionado y publicaré mis resultados.

Edit2: Parece que others have the same issue, a menos que el mensaje del foro era también la suya ...

Según this forum post, usted podría intentar:

$im->setImageFormat("png32"); 

una persona le informó que trabajaron, pero otro dijo no ...

+0

PHP version => 5.3.2-1ubuntu4.2 módulo imagick versión => 2.1.1-rc1 –

+0

@Jan: Gracias. Publiqué algunas sugerencias más. ¿Es esta la acción PHP/imagick que se instala a través del 'apt-get' de Ubuntu? ¿Qué versión de Ububtu? Puedo configurar una máquina virtual y probar esto para usted en mi extremo. A menudo estoy en [la sala de chat de PHP] (http://chat.meta.stackoverflow.com/rooms/60/php) si quieres hablar sobre esto. – Josh

+0

uso ubuntu 10.04 lucid lynx, imagick y php fueron instalados por synaptic (apt frontend). También lo probé en hosting con la versión 5.3.3 de PHP y la versión del módulo imagick 2.3.0 –

0

Inkscape usa la propiedad opacity no admitida de manera ubicua. Use fill-opacity y stroke-opacity en su lugar.

+0

Merece la pena saberlo, pero he intentado reemplazar la opacidad con opacidad de relleno y no hace ninguna diferencia en este ejemplo. – JMacArthur

Cuestiones relacionadas