Java 如何裁剪位图?
我开发了一个绘画应用程序,我想插入裁剪功能,我使用CanvasView中的以下代码: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
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);
}