SORU
16 Temmuz 2012, PAZARTESİ


Nasıl bir PNG görüntü sunucu tarafı kurtarmak için, base64 veri bir dize

Nihilogic" JavaScript aracı PNG resimleri. için tuval çizimleri dönüştürmek için "Canvas2İmage var kullanıyorum Şu an ihtiyacım olan şey bu araç, bir sunucu üzerinde gerçek PNG dosyaları içine PHP kullanarak oluşturduğu bu base64 dizeleri açmaktır.

Kısacası, şu anda ne yaptığımı istemci tarafında bir dosya oluşturmak için kullanarak Canvas2İmage, base64 olarak kodlanmış veri almak ve sunucu AJAX kullanarak gönderin:

// Generate the image file
var image = Canvas2Image.saveAsPNG(canvas, true);   

image.id = "canvasimage";
canvas.parentNode.replaceChild(image, canvas);

var url = 'hidden.php',
data = $('#canvasimage').attr('src');

$.ajax({ 
    type: "POST", 
    url: url,
    dataType: 'text',
    data: {
        base64data : data
    }
});

Bu noktada, "hidden.php" veri bloğu gibi görünüyordata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABE...

Bu noktadan itibaren, çok şaşırdım. Okuduğum kadarıyla, PHP kullanmak gerekiyor sanırımimagecreatefromstringişlevi, ama aslında base64 kodlanmış dize gerçek bir PNG görüntüsü oluşturmak ve benim sunucu üzerinde saklamak için nasıl emin değilim. Yardım lütfen!

CEVAP
16 Temmuz 2012, PAZARTESİ


Bu dizeden base64 görüntü veri ayıklamak, bunu çözmek gerekir ve diske kaydedebilirsiniz, zaten bir png olduğu için GD ihtiyacın yok o zaman.

$data = 'data:image/png;base64,AAAFBfj42Pj4';

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);

file_put_contents('/tmp/image.png', $data);

Ve bir one-liner:

$data = base64_decode(preg_replace('#^data:image/\w ;base64,#i', '', $data));

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009