У меня есть эта странная проблема с моей пользовательской камерой на Samsung S4. Я все другие устройства, которые я тестировал, работает, даже на S4 mini.S4 изображение, снятое с пользовательской камерой, является повреждением
сфотографированные выглядит следующим образом:
Существует эти белые полосы, что может это быть?
код не сделает ничего странно, я думаю ...
@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
}
}
Попробуйте использовать меньшее разрешение. Я столкнулся с этим поведением с моей библиотекой CWAC-Camera, и мой временной вывод заключается в том, что некоторые устройства лгут о своем максимальном разрешении. – CommonsWare