2013-12-03 8 views
0

Я пытался обрезать изображение из растрового изображения с использованием YuvImage, как это:Обрезок прямоугольной области от bitmao использования YuvImage производит странный результат

 Bitmap bitmap=params[0]; 
     ByteArrayOutputStream bos=new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bos); 
     byte[] data=bos.toByteArray(); 
     //bos=null; 
     YuvImage yuvImage=new YuvImage(data, ImageFormat.NV21, bitmap.getWidth(), bitmap.getHeight(),null); 
     bos=new ByteArrayOutputStream(); 
     boolean isCropped=yuvImage.compressToJpeg(rect, 100, bos); 
     if(isCropped) 
      data=bos.toByteArray(); 
     bitmap=BitmapFactory.decodeByteArray(data, 0, data.length); 
     return bitmap; 

Это приводит к тому, результирующему изображению Strange and scary...like an old Black and White TV

Есть альтернативный подход чтобы обрезать и сохранить изображение без использования Intent.

ответ

1

Вы считаете Bitmap.CompressFormat.JPEG как ImageFormat.NV21, который не должен быть правдой.

+0

Как преобразовать YuvImage в растровое изображение или показать его в ImageView? – vamsiampolu

+0

@ user2309862 Я не думаю, что для этого есть функция удобства. Полагаю, вы можете искать и использовать какой-то открытый код. – auselen

+0

Могу ли я использовать Bitmap.CompressFormat.JPEG с YUVImage ... – vamsiampolu