Я боролся с этой проблемой уже несколько дней, и я действительно не знаю, в чем проблема.Мой класс 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.Когда моя следующая активность извлекает эти данные:
bitmap = BitmapFactory.decodeStream(createInputStream(Base64.decode(obj.getString("photo_image"), Base64.DEFAULT)));
Качество полностью испорчено.Как будто это было сделано 0.3mpx камерой.Я использую Samsung Galaxy Nexus, поэтому я считаю, что мой экран делает его еще хуже.Изображения в CLOB имеют размер около 2,7 КБ ... поэтому я предполагаю, что при отправке на мой сервер данные теряются ... Не совсем уверен.
Кто-нибудь когда-либо видел это?
Спасибо, Фелипе