代码之家  ›  专栏  ›  技术社区  ›  hemu

在0x09050941(代码=1)处获取错误致命信号11(SIGSEGV)关于使用画布进行圆形图像

  •  1
  • hemu  · 技术社区  · 11 年前

    我陷入了一个奇怪的问题。 在我的应用程序中,用户可以更改他/她的个人资料图片。这张照片显示在一轮中。 我正在从相机/文件(Gallery)拍摄图像&为了在圆角中隐藏位图,我正在使用以下代码。

    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
    

    编辑::

    我有一个User POJO,它保存从SQLite检索的User对象。我正在将这个Pojo转换为json&存储在SharedPreferrance中,直到用户会话处于活动状态。

    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;
    
    }
    

    我使用Gson进行JSON到POJO&反之亦然。但我不知道Gson库是否会解析我的 imageData (数据类型位图)是否正确。这可能会造成问题。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Community Dan Abramov    7 年前

    我想你会想检查一下 this guys solution 因为位图似乎是不可序列化的。我对JSON/Gson的机制了解不够,不知道这肯定是个问题。如果我站在你的立场上,我会首先更改代码,使其从PNG文件而不是JSON文件中读取位图,并确认这是 这个 问题然后看一种更好的方法来序列化/存储位图,就像上面的链接一样。