如何在图库中保存许多 imageview 副本

Posted

技术标签:

【中文标题】如何在图库中保存许多 imageview 副本【英文标题】:How can I save many copy of imageview in gallery 【发布时间】:2017-08-31 02:40:09 【问题描述】:

我将我的imageview 保存到图库,但是当我保存另一个imageview 时,它将替换前一个,我不知道为什么file.createNewFile(); 被忽略。如何为我的 imageview 保存不同的图像文件?代码如下。

    save.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 
            RelativeLayout content = (RelativeLayout) findViewById(R.id.dashBoard);
            content.setDrawingCacheEnabled(true);
            Bitmap bitmap = content.getDrawingCache();
            File file = new File(Environment.getExternalStorageDirectory().getPath()+ imagename+ ".png");

            try 
                if (!file.exists()) 
                    file.createNewFile();

                
                FileOutputStream ostream = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
                ostream.close();
                content.invalidate();
                Toast.makeText(getApplicationContext(), "SAVED", Toast.LENGTH_SHORT).show();
             catch (Exception e) 
                    e.printStackTrace();

             finally 
                content.setDrawingCacheEnabled(false);
            
        
    );

【问题讨论】:

【参考方案1】:

尝试使用UUID.randomUUID() 而不是imagename 我认为图像名称总是相同的,这就是它替换旧图像的原因

【讨论】:

感谢您的回答。它现在有效,我现在明白我的问题是什么。【参考方案2】:

你可以把当前时间作为文件名::

    save.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        RelativeLayout content = (RelativeLayout) findViewById(R.id.dashBoard);
        content.setDrawingCacheEnabled(true);
        Bitmap bitmap = content.getDrawingCache();
        Date d = new Date();
        CharSequence imagename  = DateFormat.format("MM-dd-yy hh-mm-ss", d.getTime());
        File file = new File(Environment.getExternalStorageDirectory().getPath()+ imagename+ ".png");

        try 
            if (!file.exists()) 
                file.createNewFile();

            
            FileOutputStream ostream = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
            ostream.close();
            content.invalidate();
            Toast.makeText(getApplicationContext(), "SAVED", Toast.LENGTH_SHORT).show();
         catch (Exception e) 
                e.printStackTrace();

         finally 
            content.setDrawingCacheEnabled(false);
        
    
);

【讨论】:

以上是关于如何在图库中保存许多 imageview 副本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ImageView 中显示图库中的图像?

如何从图库和相机的 imageview 中设置图像? [复制]

从图库中选择图像后出现空白屏幕

Android:从图库加载的位图在 ImageView 中旋转

android如何将捕获的图像保存到手机库中

如何将图像连接到另一个 ViewController 并在 ImageView 中显示它?