我有相当讨厌的问题。我正在构建一个可以分享照片的应用程序。在你拍摄实际照片的SurfaceView上,分辨率非常好。但是,当我检索该图像并使用毕加索将其显示在ListView中时,该解决方案就成了废话。像素化是真实的。有什么我做可怕的错误造成这种情况?下面的第一个代码片段是我实际保存照片的位置,下面的代码片段是我的适配器中用于listview的getItemView()方法。提前致谢。Android:从最高分辨率的文件中显示图像
请注意,您在我的代码中看到的“照片”变量是我创建的Parse子类,用于更轻松地处理与每张照片关联的数据。我认为你可以放心地忽略它。
编辑:
相机的SurfaceView: 请注意,我试图将相机参数设置为允许的最高品质。不幸的是,当我LOG的size.width和size.height时,我只能得到大约176x144。有没有办法为支持的相机尺寸本身获得更高的分辨率?
camera.setDisplayOrientation(90);
Parameters parameters = camera.getParameters();
parameters.set("jpeg-quality", 70);
parameters.setPictureFormat(ImageFormat.JPEG);
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
Size size = sizes.get(Integer.valueOf((sizes.size()-1)));
parameters.setPictureSize(size.width, size.height);
camera.setParameters(parameters);
camera.setDisplayOrientation(90);
List<Size> sizes2 = parameters.getSupportedPreviewSizes();
Size size2 = sizes.get(0);
parameters.setPreviewSize(size2.width, size2.height);
camera.setPreviewDisplay(holder);
camera.startPreview();
保存照片:
// Freeze camera
camera.stopPreview();
// Resize photo
Bitmap mealImage = BitmapFactory.decodeByteArray(data, 0, data.length);
Bitmap mealImageScaled = Bitmap.createScaledBitmap(mealImage, 640, 640, false);
// Override Android default landscape orientation and save portrait
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap rotatedScaledMealImage = Bitmap.createBitmap(mealImageScaled, 0,
0, mealImageScaled.getWidth(), mealImageScaled.getHeight(),
matrix, true);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
rotatedScaledMealImage.compress(Bitmap.CompressFormat.JPEG, 100, bos);
byte[] scaledData = bos.toByteArray();
// Save the scaled image to Parse with the date and time as its file name.
DateTime currentTime = new DateTime();
DateTimeFormatter fmt = DateTimeFormat.forPattern("HH MM SS");
photoFile = new ParseFile(currentTime.toString(fmt), scaledData);
photo.setPhotoFile(photoFile);
显示它:
final ParseImageView photoView = holder.photoView;
ParseFile photoFile = photo.getParseFile("photo");
Picasso.with(getContext())
.load(photoFile.getUrl())
.into(photoView, new Callback() {
@Override
public void onError() {
}
@Override
public void onSuccess() {
}
});
你检查与文件浏览器,结果呢? – 2014-10-17 01:46:17
是的,我想为此做出答案,但我想我只是想先确认一下,因为我没有看到任何问题,当您尝试使用picasso显示它时 – 2014-10-17 01:56:36
@nayoso您已经帮助我确定了问题。问题是我手机的相机本身,还是我设置的相机? – 2014-10-17 02:08:14