1

私は1つの奇妙な問題で立ち往生しています。私のアプリでは、ユーザーは自分のプロフィール写真を変更できます。そして、その画像は1ラウンドで表示されます。カメラ/ファイル(ギャラリー)から画像を取得し、次のコードを使用して丸い角のビットマップを変換します。

public static Bitmap getRoundedShape(Context context, Bitmap scaleBitmapImage, int imageWidth, int imageHeight) {
        int targetWidth = getDPEquivalentPixels(context, imageWidth);
        int targetHeight = getDPEquivalentPixels(context, imageHeight);
        Bitmap targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888);

        Canvas canvas = new Canvas(targetBitmap);
        Path path = new Path();
        path.addCircle(((float) targetWidth - 1) / 2, ((float) targetHeight - 1) / 2, (Math.min(((float) targetWidth), ((float) targetHeight)) / 2), Path.Direction.CW);
        Paint paint = new Paint();
        paint.setColor(Color.GRAY);
        // paint.setStyle(Paint.Style.STROKE);
        paint.setStyle(Paint.Style.FILL);
        paint.setAntiAlias(true);
        paint.setDither(true);
        paint.setFilterBitmap(true);
        canvas.drawOval(new RectF(0, 0, targetWidth, targetHeight), paint);

        canvas.clipPath(path);
        Bitmap sourceBitmap = scaleBitmapImage;
        canvas.drawBitmap(sourceBitmap, new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap.getHeight()), new Rect(0, 0, targetWidth, targetHeight), null);
        return targetBitmap;
    }

まず、画像を圧縮してサーバーにアップロードしています。次に、それをローカルの SQLite にバイト配列として保存し、上記の方法を使用してラウンド ビットマップに変換して表示しImageViewます。

これからはSQLiteプロフィール画像を参考にさせていただきます。私の問題は、初めて丸い角のコードが正常に機能することですが、SQLIte Image を使用してそれを丸い形状に変換しようとすると、次のエラーが発生します。

A/libc(14809): Fatal signal 11 (SIGSEGV) at 0x5f763ee0 (code=1), thread 14809

編集 ::

SQLite から取得した User オブジェクトを保存する User POJO を使用しています。そして、このPojoをjsonに変換し、ユーザーセッションがアクティブになるまでSharedPreferanceに保存しています。

public class User {

    private int uid;
    private String userName;
    private String firstName;
    private String lastName;
    private String email;
    private Date dob;
    private String gender;
    private int delFlag;
    private int pin;
    private Bitmap imageData;

}

JSONからPOJOへのGsonとその逆の解析を使用しています。しかし、Gson ライブラリが私のimageData(Data type Bitmap) を適切に解析するかどうかはわかりません。問題を引き起こしている可能性があります。

4

1 に答える 1

1

Bitmapはシリアル化できないように思われるので、この人の解決策を確認することをお勧めします。JSON / Gsonの仕組みについては、これが間違いなく問題であることを知るのに十分な知識がありません。私があなたの立場にあった場合、最初にコードを変更して、JSONではなくPNGファイルからビットマップを読み取るようにし、これが問題であることを確認します。次に、上記のリンクのようにビットマップをシリアル化/保存するためのより良い方法を検討してください。

于 2013-03-12T11:13:40.090 に答える