Ne yapmaya çalışıyorum basit ve zihnimde çok basit olmalıdır. Sonuçlar az teşvik olmuştur. Ben yapmaya çalışıyorum Ne: Ben base64 kodlanmış PNG görüntü verilerini alan bir web sayfası var. Ben ve başarıyla doğru adımlarda veri dosya sisteminde bir görüntü yaratmak için almış olabilir. "Senaryo A" diyoruz:
$imageData = $_POST['png'];
$imageStr = base64_decode($imageData);
$image = imagecreatefromstring($imageStr);
imagepng($image, $somePath);
Bu çalışıyor. Ama şimdi sırayla aynen yukarıdaki gibi, geri dosya sistemine yazacak olan daha sonra bu görüntü, base64 kodlamak okumak ve Senaryo A göndermeye yeni bir şartı var. Bu ikinci senaryoyu geri Senaryo A, "Senaryo B" veri ve mesajları okur birini arayın. Senaryo A Ben hata alıyorum Senaryo B alınan verilere imagepng aramak için çalıştığında bu:
imagepng(): supplied argument is not a valid Image resource
Hala benimle? Etkileyici. Peki bütün bunlar ne benim için anlamı Senaryo B, dosya sistemi. Png veri okuma onu kodlama ve Senaryo A. göndermeden yolu ile yanlış bir şey (aşağıdaki gibi yapar olmasıdır w / hata giderme işlemleri o kısalık çıkarına, ama hiçbir hata) gerçekleşmekte olan -
// Read in image file, base64-encode
$fd = fopen($somePath, 'rb');
$size = filesize($somePath);
$data = fread($fd, $size);
fclose($fd);
$encoded = base64_encode($data);
Daha sonra cURL kullanarak Senaryo A nakleder, w / bir param olarak "$ kodlanmış".
Şimdi, 'Net bu yöntemin sayısız örneklerini buldum. Ben çalışmak gerekir eminim. Öyle değil. Ben de file_get_contents kullanarak denedim. Ayrıca dere ve base64 kodlama ... hayır şans olarak görüntü yakalamak için çıkış tampon kontrolünü kullanarak sonra, görüntüyü okumak için 'imagecreatefrompng' kullanarak çalıştı. Sonunda ben yukarıdaki yaklaşım basit ve en yaygın olduğunu düşünüyorum.
Özür dilemek bu mesaja çok uzun ve / veya takip etmek çok zor ise. Hvardırketli parçalar sürü hepsi bu. Herhangi bir geribildirim büyük mutluluk duyacağız.
Şerefe
GÜNCELLEME: Ben MD5 kullanarak kod boyunca adım gibi görüntü dize incelemek için Jon Skeet mükemmel öneri başına, ben sorunu daralmış ettik - Ben Senaryo B dosya sistemine görüntü yazmak bir kez, sonra tekrar okudum, o değişti . Yani:
$imageStr = base64_decode($imageData);
$image = imagecreatefromstring($imageStr);
imagepng($image, $somePath);
Ben düz w / eski fread () geri okuduğunda, MD5 imza değişti çünkü ..., verileri işlemek gibi görünüyor. Ben belki o meta ekler, imagepng işlevi olduğunu düşünüyorum? Php dokümanlar, bu konuda net değildir. Bu durumda, ben gibi bir şey, onu yazarken (), ben ne yapıyorum tersini yapmak gerekir geri yerine w / freadla görüntüyü okuma düşünüyorum:
$image = imagecreatefrompng($somePath);
... Sonra doğrudan görüntünün içeriği almak için bir yol bulmalısınız. Ben bunu nasıl anlamaya olamaz olsa: oa yolu w / çıkış görüntünün içeriği, "imagepng ($ görüntü)" gibi bir işlevi gerektirecek gibi görünüyor ... ve ben yapmak istemiyorum ne .
Bu noktada ben soru da olduğunu düşünüyorum:
- nasıl yapmam görünüyor ne imagepng (veya geri) geri, ya da
- nasıl olabilir i çıkışı bir görüntü kaynağın içeriğini doğrudan