5

私はそこに多くの投稿を読みますか?しかし、私は正しい答えを見つけられません。

私はこれをやろうとします:

@Override
public void onPictureTaken(byte[] paramArrayOfByte, Camera paramCamera) {
    try {


        Bitmap bitmap = BitmapFactory.decodeByteArray(paramArrayOfByte, 0,
        paramArrayOfByte.length);

        int width = bitmap.getWidth();
        int height = bitmap.getHeight();

        FileOutputStream os = new ileOutputStream(Singleton.mPushFilePath);

        Matrix matrix = new Matrix();
        matrix.postRotate(90);
        Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width,
            height, matrix, false);

        resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 95, os);
        os.close();
        ...

BitmapFactory を使わずに画像を回転させる方法はありますか? 画質を落とさずに画像を回転させたい!

4

1 に答える 1

4

おそらく、Camera.setDisplayOrientationを使用して、必要に応じてすでに回転している写真を撮ることができますか?Androidカメラの回転を確認してください。さらに、Camera.Parameters.setRotation()を調べます。これらのテクニックの1つがあなたのためにトリックをするはずです。

それ以外の場合、Bitmap.compressでパラメーター95を使用することを除いて、コードは正常に見えます。ロスレス圧縮には100を使用する必要があります。

メモリ不足の例外を回避するには、Camera.Parameters.setPictureSize()を使用して低解像度の画像(3Mpxなど)を撮影します。つまり、本当に8Mpxの写真が必要ですか?必ずCamera.Parameters.getSupportedPictureSizes()を使用して、デバイスでサポートされているサイズを確認してください。

于 2012-08-09T13:02:40.883 に答える