-2

我正在创建一个从 url 中提取图像并将它们放入 recyclerview 的应用程序。然后,用户可以访问这些图像并全屏查看。这是用毕加索实现的。我现在希望能够使用 onTouchEvent 或其他东西在 Picasso 加载的图像上进行手指绘画,但不知道该怎么做。

此类将图像设置为使用毕加索加载的 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;
        }
    }


}
4

1 回答 1

2

尝试使用用户选择的图像将其设置在画布对象中并在画布对象本身上绘制,而不是图像。有很多教程可以帮助您了解如何在画布上绘图。此过程与毕加索图像库没有任何联系,因此我建议首先通过毕加索获取图像,然后将图像发送到您的自定义画布实现中,然后返回您可以在编辑后设置到毕加索的位图/可绘制对象。还有很多关于如何从画布导出图像以在需要时获取编辑图像的教程。

我希望这会有所帮助,帕诺斯。

于 2019-11-19T08:55:52.747 回答