2014-01-08 2 views
1

У меня есть эта странная проблема с моей пользовательской камерой на Samsung S4. Я все другие устройства, которые я тестировал, работает, даже на S4 mini.S4 изображение, снятое с пользовательской камерой, является повреждением

сфотографированные выглядит следующим образом:

enter image description here

Существует эти белые полосы, что может это быть?

код не сделает ничего странно, я думаю ...

@Override 
    public void onPictureTaken(byte[] data, Camera myCamera) { 
     File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
     if (pictureFile == null) { 
      return; 
     } 

     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      fos.write(data); 
      fos.close(); 

      resizeImage(pictureFile.getPath()); 

      Intent returnIntent = new Intent(); 
      returnIntent.putExtra("path", pictureFile.getPath()); 
      setResult(RESULT_OK, returnIntent); 
      finish(); 

     } catch (FileNotFoundException e) { 
      //stuff 
     } catch (IOException e) { 
      //stuff 
     } 
    } 

Это изменение размера, может быть, есть что-то делать:

private void resizeImage(String picturePath) { 
    try { 

     Bitmap bitmapIn = BitmapFactory.decodeFile(picturePath); 

     Float w = (float) bitmapIn.getWidth(); 
     Float h = (float) bitmapIn.getHeight(); 

     Float aspect = w/h; 

     if ((w * h) > 120000) { 

      Bitmap bitmapOut; 

      int neww = 400; 

      if (w < h) { 
       neww = 300; 
      } 

      Float newh = (h * neww)/w; 

      bitmapOut = Bitmap.createScaledBitmap(bitmapIn, neww, 
        newh.intValue(), false); 

      File file = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
      FileOutputStream fOut; 

      fOut = new FileOutputStream(file); 
      bitmapOut.compress(Bitmap.CompressFormat.JPEG, 60, fOut); 
      fOut.flush(); 
      fOut.close(); 
      bitmapOut.recycle(); 
     } else { 

     } 

     bitmapIn.recycle(); 

    } catch (Exception e) { 
     //stuff 
    } 
} 
+0

Попробуйте использовать меньшее разрешение. Я столкнулся с этим поведением с моей библиотекой CWAC-Camera, и мой временной вывод заключается в том, что некоторые устройства лгут о своем максимальном разрешении. – CommonsWare

ответ

0

Может быть, это решение для вас ...

У меня была такая же проблема, и интересная ситуация произошла в Samsung S4!

Проблема возникает, когда размер изображения намного меньше размера предварительного просмотра. Например: Предварительный просмотр Размер: 1920 x 1080 и 640 x 480 Размер изображения. Итак ... устройство установило максимальное разрешение для изображения, и я не знаю, почему ...

Чтобы решить эту проблему, вы должны объединить оба размера: размер предварительного просмотра и размер изображения. Это хорошо для меня. С двумя размерами в сочетании белые полосы не появляются! :-)

Смежные вопросы