Android 裁剪的方形位图位置不正确

Android 裁剪的方形位图位置不正确,android,image,bitmap,surfaceview,crop,Android,Image,Bitmap,Surfaceview,Crop,我想实现一个类似instagram的拍照应用程序,它将我拍摄的照片裁剪成正方形,并顺时针旋转,使其保持纵向。将位图裁剪为正方形没有问题,但裁剪不是从照片的一角开始的。(x,y)=(0,0)照片的左侧部分被裁剪掉。我想从原始位图的左上角裁剪。有什么帮助吗 以下是拍照和裁剪图片的代码: 活动_New_Food.java public class Activity_New_Food extends Activity { byte[] byteArray; ImageView foodPhoto;

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

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

活动_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);

}
public class Activity\u New\u Food扩展活动{
字节[]字节数组;
ImageView foodPhoto;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u new\u food);
foodPhoto=(ImageView)findViewById(R.id.anf_foodPhoto);
byteArray=getIntent().getByteArrayExtra(“食品图片”);
位图原始\u bmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
矩阵=新矩阵();
矩阵旋转后(90);
int值=0;

如果(original_bmp.getHeight()我已经稍微复制并修改了您的代码,并且它完全按照它看起来应该做的做了。 我创建了一个300x500px位图,并使用画布绘制。然后我使用与您相同的方法进行裁剪和旋转。结果是一个300x300px位图,其中包含原始位图的顶部3/5,顺时针旋转90度

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


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

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

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

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