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

  • EvilControllers

    EvilControll

    20 Ocak 2008
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • MrOctopi

    MrOctopi

    6 Aralık 2010