我在三星S4中使用自定义相机时遇到了这个奇怪的问题。我测试过的所有其他设备都能正常工作,即使是在S4 mini上也是如此。
拍摄的照片如下:
有这些白色条纹,这些可能是什么?
代码并没有什么奇怪的,我想......
@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 :(得分:2)
也许你可以根据设备使用最佳图片大小来解决这个问题。
What is the best camera parameters for android camera opened in surface view
答案 1 :(得分:0)
也许是你的解决方案......
我遇到了同样的问题,三星S4发生了一个有趣的情况!
当图像尺寸远小于预览尺寸时,会出现问题。例如:预览尺寸:1920 x 1080和640 x 480图片尺寸。所以......设备设置了图片的最大分辨率,我不知道为什么......
要解决此问题,您必须合并两种尺寸:预览尺寸和图片尺寸。对我来说还好。两种尺寸组合在一起,不会出现白色条纹! : - )