Java 如何裁剪位图?

Java 如何裁剪位图?,java,android,paint,crop,Java,Android,Paint,Crop,我开发了一个绘画应用程序,我想插入裁剪功能,我使用CanvasView中的以下代码: public void Crop() { // TODO Auto-generated method stub int value = 0; if (bitmap.getHeight() <= bitmap.getWidth()) { value = bitmap.getHeight(); } else { value = bitmap.ge

我开发了一个绘画应用程序,我想插入裁剪功能,我使用CanvasView中的以下代码:

public void Crop() {
    // TODO Auto-generated method stub
    int value = 0;
    if (bitmap.getHeight() <= bitmap.getWidth()) {
        value = bitmap.getHeight();
    } else {
        value = bitmap.getWidth();
    }

    Bitmap finalBitmap = null;
    finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
    Bitmap lastBitmap = null;
    lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);

}
这是有错误的一行:

if (bitmap.getHeight() <= bitmap.getWidth()) {

输入的
位图
为空,因此
NullPoinerException


顺便说一下,您的代码应该更像这样:

public void Crop() {
    if(bitmap == null) {
        return;
    }

    final int value;
    if (bitmap.getHeight() <= bitmap.getWidth()) {
        value = bitmap.getHeight();
    } else {
        value = bitmap.getWidth();
    }

    final Bitmap finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
    final Bitmap lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
}
public void Crop(){
如果(位图==null){
返回;
}
最终整数值;

if(bitmap.getHeight())在何处声明位图变量:-/在将其发送到
Crop()
之前或在
Crop()
中使用它之前,检查
imageViewCrop=(ImageView)this.findViewById(R.id.imageViewCrop);imageViewCrop.setOnClickListener(new OnClickListener()){public void onClick(View v){Bitmap Bitmap Bitmap=Bitmap.createBitmap(myView.getWidth(),myView.getHeight(),Config.argb8888);Canvas Canvas=new Canvas(Bitmap);myView.draw(Canvas);Toast.makeText(getApplicationContext(),“重做工具已点击”,Toast.LENGTH_SHORT.show();myView.Crop();Bitmap.recycle();})
这来自第一个活动
onClick()
中的
bitmap
变量与在其他地方定义的单独定义的类变量
bitmap
不同(即
Crop()
中使用了不同的
位图
变量)。您可能应该将
位图
传递给
公共无效裁剪(最终位图)
。我将位图传递给公共无效裁剪,但仍然没有传递任何内容
imageViewCrop = (ImageView)this.findViewById(R.id.imageViewCrop);
    imageViewCrop.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            Bitmap bitmap = Bitmap.createBitmap(myView.getWidth(),myView.getHeight(),Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            myView.draw(canvas);
            Toast.makeText(getApplicationContext(), "Redo tool clicked", Toast.LENGTH_SHORT).show();
            myView.Crop();  
            bitmap.recycle();
        }
    });
public void Crop() {
    if(bitmap == null) {
        return;
    }

    final int value;
    if (bitmap.getHeight() <= bitmap.getWidth()) {
        value = bitmap.getHeight();
    } else {
        value = bitmap.getWidth();
    }

    final Bitmap finalBitmap = Bitmap.createBitmap(bitmap, 0, 0, value, value);
    final Bitmap lastBitmap = Bitmap.createScaledBitmap(finalBitmap, 144, 144, true);
}