2010-01-11 23 views
5

Android için bir uygulama yazıyorum. Fotoğraf makinesinden çekilen fotoğraf üzerinde bazı görüntü işleme işlemleri yapmam gerekiyor. Fotoğrafı almak için Camera.PictureCallback'i kullanıyorum ve resmi bayt dizisi olarak alıyorum. Sorun şu ki, fotoğrafın her pikseli üzerinde işlem yapmak istiyorum (bazı filtreleme ve diğer şeyler), bu yüzden bayt dizisinde fotoğrafın kötü bir fikir olmadığını düşünüyorum. Ancak bu bayt dizisindeki bilgileri nasıl yorumlayacağımı bilmiyorum ... İşlemi gerçekleştirmeyi bildiğim tek yol BitmapFactory.decodeByteArray() yöntemini kullanıp Bitmap nesnesini kullanmaktır. Bu, çok sayıda görüntü işleme işlemek için iyi bir yol mu? Şu anda şuna benzer bir şey kullanın:Android'de Görüntü İşleme

Bitmap mPhotoPicture mPhotoPicture = BitmapFactory.decodeByteArray (imageData, 0, imageData.length); mPhotoPicture = mPhotoPicture.copy (Bitmap.Config.RGB_565, true);

Ben herhangi bir yardım ederiz.

cevap

7

Bir bayt dizisine kod çözmenin Android'de bunu yapmanın en iyi yolu olduğundan emin değilim, ancak genel olarak görüntü işleme hakkında bildiğim şeyi sunabiliyorum.

RGB_565 kullanıyorsanız, bu her pikselin 16 bit veya bu baytlardan ikisi anlamına gelir. İlk 5 bit kırmızı, sonraki 6 yeşil ve son 5 mavidir. Bununla uğraşmak Java'da kıllı. ARGB_8888 gibi daha kolay bir formatta çalışmanızı öneririm. Bu, 32 bit veya piksel başına dört bayt olduğu ve her baytın kendi değeri (alfa, kırmızı, yeşil, mavi) olduğu anlamına gelir.

, bu durumda, bütün mavi belirli bir kanalın tüm dışarı almalıdır Yani 0'a vb [3], [7], [11] gibi, her dördüncü byte ayarlamayı deneyin, test etmek için. Her bir piksel için tüm yeşil değerler,

[2], [6], [10] vb.

(ı endian hakkında emin değilim çünkü Not, dört bileşenden ters sırayla gidebilir! Yani sadece ... alfa, değil mavi çıkarmak nasıl söyleyebilirdi) Bunun için

+0

Teşekkür kullanışlı bilgi. Artık resim fotoğraflarını sadece şu formatlarda çekebileceğimi belgeleyen belgelerden biliyorum: PixelFormat.YCbCr_420_SP (NV21), PixelFormat.RGB_565 veya PixelFormat.JPEG Sanırım RGB_565 kodlamasını yazmaya çalışıyorum. – Kubeczek

+0

Sağ. Bu biçimde düzenleme yapın veya düzenlemeden önce dönüştürmenin bir yolunu bulun. –

İlgili konular