我有相當討厭的問題。我正在構建一個可以分享照片的應用程序。在你拍攝實際照片的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