Java 如何在毕加索加载的图像上用手指触摸画画
我正在创建一个应用程序,从URL中提取图像并将其放入回收视图。然后用户可以访问这些图像并全屏查看。这是通过毕加索实现的。我现在想要的能力,手指画的图像加载了毕加索与一个本体论或东西,但不知道如何做到这一点 此类将图像设置为加载了毕加索的map_edit_gallery.xml:Java 如何在毕加索加载的图像上用手指触摸画画,java,android,android-recyclerview,picasso,android-paint,Java,Android,Android Recyclerview,Picasso,Android Paint,我正在创建一个应用程序,从URL中提取图像并将其放入回收视图。然后用户可以访问这些图像并全屏查看。这是通过毕加索实现的。我现在想要的能力,手指画的图像加载了毕加索与一个本体论或东西,但不知道如何做到这一点 此类将图像设置为加载了毕加索的map_edit_gallery.xml: public class EditMapImage extends AppCompatActivity { @Override public void onCreate(@Nullable Bu
public class EditMapImage extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_edit_gallery);
checkIntent();
//Find savebutton
ImageButton saveMapButton = findViewById(R.id.saveEditImagebutton);
saveMapButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),"Saved",Toast.LENGTH_SHORT).show();
}
});
}
//This will check to see if the intent extras exist and if they do get the extra
private void checkIntent(){
if(getIntent().hasExtra("image_url") && getIntent().hasExtra("name_url")){
String imageUrl = getIntent().getStringExtra("image_url");
String nameUrl = getIntent().getStringExtra("name_url");
setMapImage(imageUrl, nameUrl);
}
}
private void setMapImage(String imageUrl, String nameUrl){
//Set the Text view
TextView name = findViewById(R.id.mapNameEditor);
name.setText(nameUrl);
//Set the Image
ImageView imageView = findViewById(R.id.mapEditScreen);
Picasso.get().load(imageUrl).into(imageView);
Picasso picasso = Picasso.get();
DrawToImage myTransformation = new DrawToImage();
picasso.load(imageUrl).transform(myTransformation).into(imageView);
}
}
编辑:
该类允许我使用画布绘制加载的图像,但不知道如何使用触摸来绘制:
public class DrawToImage implements Transformation {
@Override
public String key() {
// TODO Auto-generated method stub
return "drawline";
}
public Bitmap transform(Bitmap bitmap) {
// TODO Auto-generated method stub
synchronized (DrawToImage.class) {
if(bitmap == null) {
return null;
}
Bitmap resultBitmap = bitmap.copy(bitmap.getConfig(), true);
Canvas canvas = new Canvas(resultBitmap);
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(10);
canvas.drawLine(0, resultBitmap.getHeight()/2, resultBitmap.getWidth(), resultBitmap.getHeight()/2, paint);
bitmap.recycle();
return resultBitmap;
}
}
}
尝试使用用户选择的图像将其设置在画布对象中,并在画布对象本身上绘制,而不是图像。有很多教程可以帮助你在画布上画画。 此过程与毕加索图像库没有任何联系,因此我建议首先通过毕加索获取图像,然后将图像发送到自定义画布实现中,然后返回位图/可绘制图像,编辑后可将其设置到毕加索中。 还有大量教程介绍如何从画布导出图像,以便在需要时获得编辑过的图像
我希望这有帮助,帕诺斯。我同意。或者您可以使用ImageView,并在其上添加具有透明背景的viewgroup,然后您可以在添加到viewgroup的视图上进行绘制。这样,毕加索会处理你的图像,你可以在itOk上画画,我想我有一个版本可以在画布上画画,可以让它在图像的中间画一条线,但是我如何设置画布,用ontouchlistener画画,这样我就可以动态地画画?我修改了上面的代码