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
en kolay yolu bir BufferedImage şu şekilde oluşturmaktır:
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length);
verileri byte dizidir.
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.
Kodunuzu düzgün gösterebiliyor musunuz? – Nepster
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
numarasına uymuyor Evet, yanlış kodu kopyaladım. Cevabımı değiştirdim. Afedersiniz. – RoflcoptrException
Orijinal olarak cevabın ne olduğunu düşündüğümde, ama bana boş bir bitmap veriyor. – RyoxSinfar