2010-07-23 16 views
6

Basit bir yol olup olmadığını soruyorum çünkü bir decodeByteArray kullanılmasının mümkün olmadığını belirten bir google raporu var. Ancak bu rapor 2008'de ortaya çıktı ve orada yayınlanmayan bir çözüm bulunmasını umuyordum. Sorun raporunda listelenen yöntem biçimi kendiniz deşifre etmekti, ancak bunu programa dahil etmek ve yavaşlatmak istemem. Herhangi bir yardım, takdir edilecektir.Fotoğraf makinesinin onPreviewFrame öğesinden byte dizisini androiddeki bir resme dönüştürmenin basit bir yolu var mı?

cevap

3

en kolay yolu bir BufferedImage şu şekilde oluşturmaktır:

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length); 

verileri byte dizidir.

+0

Android'de çalıştığından emin misiniz? BufferedImage veya ImageIO için herhangi bir referans malzeme bulamıyorum. Java dili referansında listeleniyor, ancak Android'in – RyoxSinfar

+0

numarasına uymuyor Evet, yanlış kodu kopyaladım. Cevabımı değiştirdim. Afedersiniz. – RoflcoptrException

+0

Orijinal olarak cevabın ne olduğunu düşündüğümde, ama bana boş bir bitmap veriyor. – RyoxSinfar

8

Bayt dizinizin kamera önizlemesinden olduğunu mu varsayıyorum? Eğer öyleyse bunu çözmeniz gerekiyor ama 2.2 ile şimdi oldukça kolay. Veriler sadece ImageFormat.NV21(int code 17)

img = new YuvImage(imgData, ImageFormat.NV21, width, height, null); 

bir dikdörtgen görüntü ile aynı boyda oluşturma olacak şekilde

bayt dizisinden bir YUV görüntü oluşturun.

Bir ByteArrayOutputStream oluşturun ve bunu, dikdörtgen ve sıkıştırma değerini compressToJpeg() olarak geçirin.

Sonra ben geri aramasında her çerçeve için kullanabilirsiniz

Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size()); 

kullanabilir ve iyi çalışıyor. Bu yardımcı olur umarım.

+0

Kodunuzu düzgün gösterebiliyor musunuz? – Nepster

İlgili konular