pqpo / SmartCropper

🔥 A library for cropping image in a smart way that can identify the border and correct the cropped image. 智能图片裁剪框架。自动识别边框,手动调节选区,使用透视变换裁剪并矫正选区;适用于身份证,名片,文档等照片的裁剪。

Home Page:https://pqpo.me/2017/09/11/opencv-border-recognition/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

裁剪之后,保存的图片显示范围超过裁剪范围

zpswz opened this issue · comments

commented

caijian1
caijian2

是有什么地方设置不对吗

这个问题你解决了吗?

caijian1 caijian2

是有什么地方设置不对吗

解决了吗

commented

菜见1 菜见2
有什么地方设置不对吗

解决了吗

没有作者都没有发解决方案

commented

我在部分机型上遇到了这个问题

修复方案

@Override
    public Bitmap getBitmap() {
        Bitmap bmp = null;
        Drawable drawable = getDrawable();
        if (drawable instanceof BitmapDrawable) {
            bmp = ((BitmapDrawable) drawable).getBitmap();
        }
        //修复裁剪区域不一致问题
        if (bmp != null) {
            int width = drawable.getIntrinsicWidth();
            int height = drawable.getIntrinsicHeight();
            int bitWidth = bmp.getWidth();
            int bitHeight = bmp.getHeight();
            if (width != bitWidth || height != bitHeight) {
                Matrix matrix = new Matrix();
                matrix.setScale(1.0f * width / bitWidth, 1.0f * height / bitHeight);
                return Bitmap.createBitmap(bmp, 0, 0, bitWidth, bitHeight, matrix, true);
            }
        }
        return bmp;
    }

这两个方法获取出的 大小不一致造成的

private Point[] getFullImgCropPoints() {
        Point[] points = new Point[4];
        Drawable drawable = getDrawable();
        if (drawable != null) {
            int width = drawable.getIntrinsicWidth();
            int height = drawable.getIntrinsicHeight();
            points[0] = new Point(0, 0);
            points[1] = new Point(width, 0);
            points[2] = new Point(width, height);
            points[3] = new Point(0, height);
        }
        return points;
    }

   

public Bitmap getBitmap() {

        Bitmap bmp = null;
        Drawable drawable = getDrawable();
        if (drawable instanceof BitmapDrawable) {
            bmp = ((BitmapDrawable) drawable).getBitmap();
        }
        return bmp;
    }

适配方案的原因