0
我一直在为这个问题奋斗了几天,现在我真的不知道是什么问题。 我CameraView类具有下面的代码:当用相机拍摄照片并发送到服务器端,丢失图片质量
Camera.PictureCallback photoCallback = new Camera.PictureCallback() {
public void onPictureTaken(byte[] imageData, Camera camera) {
Intent mIntent = new Intent();
mIntent.putExtra(GeneralCodes.CREATE_NEW_ACCOUNT_PROFILE_PICTURE, imageData);
setResult(Activity.RESULT_OK, mIntent);
finish();
}
};
然后,我的活动,接受这样的结果:
ImageView i = (ImageView) findViewById(R.id.createAccounProfileImage);
Bitmap yourSelectedImage = FileUtilities.createBitmapBasedOnByteImage(data.getByteArrayExtra(GeneralCodes.CREATE_NEW_ACCOUNT_PROFILE_PICTURE), getResources().getDisplayMetrics().density);
finalImage=yourSelectedImage;
i.setImageBitmap(BitmapUtils.getRoundedCornerBitmap(finalImage, Math.min(finalImage.getWidth(), finalImage.getHeight()), true));
方法FileUtilities.createBitmapBasedOnByteImage真的做的唯一的事情就是一个BitmapFactory.decodeByteArray ()调用。
然后,我的下一个步骤是发送该位图到我的服务器:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
if(finalImage!=null)finalImage.compress(Bitmap.CompressFormat.JPEG, 0, baos);
byte[] data = baos.toByteArray();
pairs.add(new BasicNameValuePair("PROFILE_PIC_DATA", Base64.encodeToString(data, Base64.DEFAULT)));
的信息发送到我的服务器和图像在CLOB坚持。 当我的下一个acticity检索此数据:
bitmap = BitmapFactory.decodeStream(createInputStream(Base64.decode(obj.getString("photo_image"), Base64.DEFAULT)));
质量是完全搞砸了。就像它是由一个0.3mpx相机拍摄的。 我正在使用三星Galaxy Nexus,所以我相信我的屏幕正在造成更糟。这些图像在CLOB中大小约为2.7kb ......所以我猜测数据在发送到我的服务器时正在丢失......我不确定。
任何有见过这种?
感谢, 费利佩
我以为0意味着“没有压缩”。谢谢你的协助! – 2012-02-29 08:57:01