Tengo un problema aquí cuando necesito crear una imagen con fondo transparente. Todavía no sé si el problema es con fabricjs o con php. Todo funciona bien cuando envío una imagen con fondo de color. El problema ocurre cuando envío una imagen con fondo transparente. La imagen generada se crea con fondo negro. Así que, déjenme explicarlo mejor: Cuando el usuario hace clic en el botón Guardar, estoy enviando la representación de cadena del lienzo a php en el lado del servidor, para que se genere la imagen del lienzo. Así que estoy usando la función de seguimiento para el envío de la representación de cadena de la lona por el Ajax (función de la POST de jQuery):Fabric.js canvas.toDataURL() enviado a PHP por Ajax
function sendStringRepresentation(){ var strDataURI = canvas.toDataURL(); strDataURI = strDataURI.substr(22, strDataURI.length); $.post("action/createImage.php", { str: strDataURI }, function(data){ if(data == "OK"){ $("#msg").html("Image created."); } else{ $("#msg").html("Image not created."); } }); }
En PHP archivo Estoy utilizando el código de seguimiento para generar la imagen:
// createImage.php $data = base64_decode($_POST["str"]); $urlUploadImages = "../uploads/img/"; $nameImage = "test.png"; $img = imagecreatefromstring($data); if($img) { imagepng($img, $urlUploadImages.$nameImage, 0); imagedestroy($img); // [database code] echo "OK"; } else { echo 'ERROR'; }
Una vez más, el problema es solo con el lienzo transparente de fondo. Con fondo de color todo funciona bien.
Intento utilizar su solución, pero todavía estoy recibiendo un fondo negro en lugar de una imagen con el fondo tranparent. Algo que noté es que la imagen final se ve mejor con su solución. Antes, con mi código, la imagen final tiene un borde dentado blanco serrado en una imagen png y un borde dentado en los textos que pongo dentro del lienzo. Ahora, usando la sugestión de código, este borde serrado feo no tiene más en la imagen final. Eso está bien, pero todavía tengo el problema con el fondo transparente. my: [link] (http://f.imgtmp.com/puy05.png) your: [link] (http://f.imgtmp.com/EGWel.png) – rodrigopandini
Ahora lo resuelvo. Estoy usando la nueva función de GD lib de PHP. El problema está en PHP no en Fabric.js. Revise este [enlace] (https://gist.github.com/2149853) – rodrigopandini
Genial, me alegro de que haya podido resolverlo.
¿Cuál fue la función que terminó teniendo que usar?oh, no importa, acabo de ver su esencia. Por lo tanto, tenía que rellenar explícitamente la imagen en color verdadero con total transparencia antes de copiar su fuente en ella. Huh. wtfphp de verdad – goldenapples