Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在毕加索加载的图像上用手指触摸画画_Java_Android_Android Recyclerview_Picasso_Android Paint - Fatal编程技术网

Java 如何在毕加索加载的图像上用手指触摸画画

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

我正在创建一个应用程序,从URL中提取图像并将其放入回收视图。然后用户可以访问这些图像并全屏查看。这是通过毕加索实现的。我现在想要的能力,手指画的图像加载了毕加索与一个本体论或东西,但不知道如何做到这一点

此类将图像设置为加载了毕加索的map_edit_gallery.xml:

    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画画,这样我就可以动态地画画?我修改了上面的代码