2011-04-01 14 views
7

Bir bufferedImage öğesinden bytearray'i almaya çalışıyorum ancak ByteArrayOutputstream öğesinin uzunluğu her zaman sıfırdır ve baytım yok. Bu, buBufferedImage to Bytes Java

BufferedImage scaledPicture = ..... 

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(scaledPicture, extension, baos); 
baos.flush(); 
byte[] toByteArray = baos.toByteArray(); 
baos.close(); 
return toByteArray; 

Herhangi bir fikir çalışmıyor neden

herhangi bir fikir yapıyorum nedir?

cevap

3

ImageIO.write dönüş değeri nedir? Uzantınız en az 1 ImageWriter ile ImageIO.getImageWritersByFormatName mu? Değilse, format desteklenmeyebilir.

+0

Bunun için çok teşekkür ederim. Yanlış dönüyor, bu yüzden yazar bulunamadı. Resim tarayıcıdan yüklendiğinden, biçimi nasıl belirlerim veya ImageIO.write çağrısında nasıl bir biçim belirtebilirim? –

+0

@Farouk Alhassan 'ImagIO.getImageWritersBySuffix' kullanmayı denedim ve bunun için herhangi bir ImageWriter 'geri alıp almadığınızı görün. Eğer öyleyse 'RenderedImage' yazmak için bunları' write' yöntemiyle kolayca kullanabilirsiniz. Şu anda kullanmakta olduğunuz yöntem, bunun etrafındaki basit bir sarıcıdır. – Melv

+0

Çok teşekkür ederim. Bir günden sonra düzeltildi. sadece eski bir test edilmemiş kod dosya uzantısı yanlış bir şekilde hesaplandı, çünkü jpeg yerine boşa harcanmış bir gün yerine .jpeg dönüyordu! Öğrenilen dersler. Her neyse, bugün dünden daha fazlasını biliyorum, bu yüzden minnettarım. tx –

1

'ImageIO.write (...)' araması doğru mu? Hayır ise, JVM uygun formatın yazarını bulamıyor olabilir.