Ho un problema qui quando ho bisogno di creare un'immagine con sfondo trasparente. Non so ancora se il problema è con fabricjs o con php. Tutto funziona bene quando ho inviato un'immagine con sfondo colorato. Il problema si verifica quando invio un'immagine con uno sfondo trasparente. L'immagine generata viene creata con sfondo nero. Quindi, mi spiego meglio: Quando l'utente fa clic sul pulsante Salva, sto inviando la rappresentazione della stringa della tela su php sul lato server, per generare l'immagine della tela. Così sto utilizzando la funzione di seguito all'invio la rappresentazione di stringa della tela da Ajax (funzione POST di jQuery):Fabric.js canvas.toDataURL() inviato a PHP da 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."); } }); }
Nel file di Io PHP utilizzando il codice di seguito per generare l'immagine:
// 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'; }
Anche in questo caso, il problema è solo con la tela di sfondo trasparente. Con lo sfondo colorato tutto funziona bene.
cerco utilizzare la soluzione, ma sto ancora ottenere uno sfondo nero invece un'immagine con sfondo tranparent. Qualcosa che ho notato è che l'immagine finale ha un aspetto migliore con la tua soluzione. Prima, con il mio codice, l'immagine finale ha un bordo dentellato bianco in un'immagine png e un bordo seghettato nei testi che ho inserito all'interno della tela. Ora, usando la tua congestione del codice, questo bordo uggly seghettato non ha più nell'immagine finale. Va bene, ma ho ancora il problema con lo sfondo trasparente. mio: [collegamento] (http://f.imgtmp.com/puy05.png) tuo: [collegamento] (http://f.imgtmp.com/EGWel.png) – rodrigopandini
Ora lo risolvo. Sto usando la nuova funzione di GD lib di PHP. Il problema è in PHP non in Fabric.js. Controlla questo [link] (https://gist.github.com/2149853) – rodrigopandini
Grande, felice che tu sia stato in grado di risolverlo.
Qual era la funzione che dovevi usare?oh, non importa, ho appena visto il tuo succo. Quindi dovevi riempire esplicitamente la vera immagine a colori con piena trasparenza prima di copiare la tua fonte su di essa. Huh. wtfphp per davvero. – goldenapples