私はこの問題に数日間苦労しています。問題は何か分かりません。カメラで写真を撮ってサーバー側に送信すると、画質が低下する
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();
}
};
そして、この結果を受けて、私のアクティビティー: マイCameraViewクラスには、次のコードを持っている
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)));
品質が完全に台無しにされています。私の次のacticityは、このデータを取得し 。それは0.3mpxのカメラで撮られたようです。 私はSamsung Galaxy Nexusを使用していますので、画面が悪化する原因になっていると思います。画像はCLOB内で約2.7kbのサイズを持っています。だから私のサーバーに送信するときにデータが失われていると推測しています...本当にわかりません。
誰でもこれを見たことがありますか?
おかげで、 フェリペ
「圧縮しない」とは思っていました。私を助けてくれてありがとう! –