裁剪的方形位图不合适

时间:2015-10-04 02:54:40

标签: android image bitmap surfaceview crop

我想实现一个像照片拍照的应用程序,它将我拍摄的照片裁剪成方形并顺时针旋转它以保持画像。将位图裁剪为方形没有问题,但裁剪不是从照片的角落开始的。 (x,y)=(0,0)照片的左侧部分被裁剪掉。我想从原始位图的左上角裁剪。有什么帮助吗?

以下是拍照和裁剪图片的代码:

Activity_New_Food.java

public class Activity_New_Food extends Activity {

byte[] byteArray;
ImageView foodPhoto;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_food);

    foodPhoto = (ImageView) findViewById(R.id.anf_foodPhoto);

    byteArray = getIntent().getByteArrayExtra("FOOD_PIC");
    Bitmap original_bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    Matrix matrix = new Matrix();
    matrix.postRotate(90);

    int value = 0;
    if (original_bmp.getHeight() <= original_bmp.getWidth()) {
        value = original_bmp.getHeight();
    } else {
        value = original_bmp.getWidth();
    }

    Bitmap finalBitmap = null;
    finalBitmap = Bitmap.createBitmap(original_bmp, 0, 0, value, value, matrix, false);

    Bitmap bmp = cropToSquare(original_bmp);
    foodPhoto.setImageBitmap(finalBitmap);

}

这是照片 http://imgur.com/a/2RGX2

1 个答案:

答案 0 :(得分:0)

我已经稍微复制并修改了你的代码,它完全按照它应该的样子运行。 我创建一个300x500px位图并使用Canvas绘制它。然后我使用与您相同的方法裁剪和旋转。结果是一个300x300px位图,包含原始位图的顶部3/5,顺时针旋转90度。

我注意到在你的照片中,裁剪的位图实际上包含原始位图中不存在的区域(左边的边距线)。这不仅仅是一个裁剪问题,你应该确保首先正确编码字节数组......

在布局中添加第二个ImageView,以便您可以并排查看两个位图以进行比较。