从应用程序资源保存到 SD 卡的图像编号

2023-12-14

我的应用程序由天列表视图组成,每天都有其特定的图像放置在无限的图库类中,我想做的是:

将具有序列号的图像从应用程序可绘制资源(无限图库类)保存到 SD 卡,

我试图获取保存图像的顺序号,如下所示:

第一张图片:Image-1.png 。

第二张图片:Image-2.png。

第三张图片:Image-3.png,

所有日期依此类推。

使用:

 Random generator = new Random();

这将导致:

首要问题:用随机数保存图像。

第二期:它不保存所有图像,而是由用户选择保存到 SD 卡,并且它还保存某些图像两次或三次。

这是与保存图像相关的代码部分:

 View vi=convertView; 
    final ViewHolder holder; 
    if(convertView==null){ 
        vi = inflater.inflate(R.layout.gallery_items, null); 
        holder=new ViewHolder(); 
        holder.text=(TextView)vi.findViewById(R.id.textView1); 
        holder.image=(ImageView)vi.findViewById(R.id.image); 
        holder.button=(Button)vi.findViewById(R.id.button_save);

 bm = BitmapFactory.decodeResource( mContext.getResources(), images[itemPos]);
         holder.image.setImageBitmap(bm);

        holder.button.setOnClickListener(new OnClickListener() {

  public void onClick(View arg0) {

      String root = Environment.getExternalStorageDirectory().toString();
        File imagesFolder = new File(root + "/Days pictures");    
        imagesFolder.mkdirs();

        Random generator = new Random();
        int n = 1000;
     n = generator.nextInt(n);
     String fname = "Image-"+ n +".png";
     File file = new File (imagesFolder, fname);
     if (file.exists ())
       file.delete (); 
     try {
        FileOutputStream out = new FileOutputStream(file);
        bm.compress(Bitmap.CompressFormat.PNG, 100, out);
        out.flush();
        out.close();

        Toast.makeText(mContext, "Saved", Toast.LENGTH_LONG).show();}   
        catch (Exception e) {
             e.printStackTrace();    
       Toast.makeText(mContext, e.toString(), Toast.LENGTH_SHORT).show();}}});

      vi.setTag(holder);}

    else holder=(ViewHolder)vi.getTag(); 
    holder.text.setText(name[itemPos]); 

    final int stub_id=images[itemPos]; 
    holder.image.setImageResource(stub_id); 

    return vi; } 

private ImageView getImageView() { 

    ImageView i = new ImageView(mContext); 

    return i; } }

感谢您的帮助 。


从您的问题和评论中我可以了解到您想要将 n 张图像保存到 SDCard。

要保存,请按照步骤操作

STEP 1:获取您需要的所有图像。确保您在此处正确获取图像列表。

STEP 2:计算列表中图像的数量并将其存储在变量中

      int numberOfImages = 15;// Get it dynamically 

STEP 3:现在循环它以按顺序存储所有图像

   //Create Directory to store images in SDCard
   String root = Environment.getExternalStorageDirectory().toString();
       File myDir = new File(root + "/saved_images");
       if(!myDir.exists()){
           myDir.mkdirs();
          } 
           // You have to get next image here from the resource here
           bm = BitmapFactory.decodeResource( mContext.getResources(), images[i]);// value for itemPos should be given here.

           // Get Last Saved Number
           SharedPreferences savedNumber = getSharedPreferences(PREFS_NAME, 0);
           int lastSavedNumber = savedNumber.getInt("lastsavednumber",0); 
           lastSavedNumber++;
           String fname = "Image-"+lastSavedNumber+".png";

           File file = new File (myDir, fname);
           if (file.exists ()) {file.delete (); }
           try {
                  FileOutputStream out = new FileOutputStream(file);
                  bm.compress(Bitmap.CompressFormat.JPEG, 90, out);//Your Bitmap from the resouce
                  out.flush();
                  out.close();

               } catch (Exception e) {
                  e.printStackTrace();
               }

      //To Store the last Number
     SharedPreferences saveNumber = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
     SharedPreferences.Editor editorset = saveNumber.edit();
     editorset.putInt("lastsavednumber",lastSavedNumber);   
     editorset.commit();   

如果您在第一步中做错任何事情,则可能会发生重复。

EDIT按顺序存储所有图像 使用 SharedPreferences 存储最后保存的图像编号。

    public static final String PREFS_NAME = "ImageNumber";  

    // Get Last Saved Number
    SharedPreferences savedNumber = getSharedPreferences(PREFS_NAME, 0);
    int lastSavedNumber = savedNumber.getInt("lastsavednumber",0); 
    lastSavedNumber++;
    String fname = "Image-"+lastSavedNumber+".png";

    //To Store Last Saved Number
     SharedPreferences saveNumber = getApplicationContext().getSharedPreferences(PREFS_NAME, 0);
     SharedPreferences.Editor editorset = saveNumber.edit();
     editorset.putInt("lastsavednumber",lastSavedNumber);   
     editorset.commit();   
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从应用程序资源保存到 SD 卡的图像编号 的相关文章

随机推荐

  • 正则表达式在多个多行字符串中查找列表值python

    我正在寻找一些帮助 以在具有多行但相似模式的字符串中搜索列表条件 每个子查询都有as and so as space and space 图案 我想搜索每个模式中的子标准并生成输出 sub apple apple event pear st
  • python、selenium 中切换帧的函数

    我正在寻找一个可以更轻松地在两个框架之间切换的功能 现在 每次我需要在帧之间切换时 我都会通过以下代码来完成此操作 driver switch to frame driver find element by css selector fra
  • Protovis 是否应该像 RaphaelJS 一样在 IE 7、8 和 9 上工作?

    我想Protovis可能在 IE 7 和 8 上工作 或者至少在 IE 9 上工作 但令我惊讶的是 我在所有 3 个浏览器上都尝试过它 但它在任何一个上都不起作用 对于那些示例页面 这是一个临时的 JS bug 它应该在 IE 上工作吗 比
  • 使用泛型进行反序列化的重构方法

    这是我要重构的方法 public static List
  • 使用量角器从日历中选择 angular-ui 日期选择器值

    我的日期选择器结构如下所示
  • 如何以编程方式将字段添加到 Delphi 中的表格

    在我的 Delphi 2009 应用程序中 我需要检查某个字段是否存在以及在应用程序执行期间是否未添加该字段 我已经弄清楚了该字段的测试 但无法添加字段 我试过这个 var fld TStringField begin if not ADO
  • 如何在 Laravel 5.6 中正确使用可选路由参数?

    我正在尝试使用 Laravel 5 6 创建一个 API 但是 在我看来 不可能在参数之前 之后使用可选的路由参数 我想实现以下目标 Route get api lists id items as gt api lists items ge
  • 无法使用 VBA .find 查找日期

    tmpArr 1 j 可以是日期或字符串 如果它是一个日期 那么我需要在 Range i4 ck4 中找到它 此范围内的日期被格式化为日期 我下面的代码没有找到我的日期 我究竟做错了什么 Data是 A 列中的代码 由字母数字组成 长度可能
  • 如何知道thrust::partition_copy的结果中有多少个元素

    我正在尝试使用推力库的partition copy函数对数组进行分区 我见过传递指针的示例 但我需要知道每个分区中有多少个元素 我尝试的是将设备向量作为 OutputIterator 参数传递 如下所示 include
  • Kafka 服务器不返回任何内容

    Zookeeper 已在 Windows 环境中启动并运行 现在 当我使用以下命令启动 Kafka 服务器时 bin windows kafka server start bat config server properties 没有显示任
  • 编写 Hyperledger Fabric Chaincode 时应遵循的最佳实践

    为了避免错误并编写高效的 Hyperledger Fabric Chaincode 应该遵循哪些最佳实践 编写 Hyperledger Fabric 链码的一般指南 有关详细说明 请参阅以下链接 https gist github com
  • Mockito - 奇怪的包范围类继承问题

    发现非常有趣的问题 并在调试后找到了重现它的场景 因此 如果我有一个包范围 B 的类 该类具有一些公共方法和扩展它的公共类 A package somepackage class B public void someMethod throw
  • 多处理 AttributeError 模块对象没有属性“__path__”

    我有一个很长的脚本 最后需要对庞大列表的所有项目运行一个函数 这需要很长时间 例如考虑 input a 1 2 3 4 a lengthy computation on some data print test 1 for testing
  • 如何使用Python字典? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我发现在 python 中迭代字典很困难 我已经通过 CodeAcademy 完成了学习并独立学习 但仍然觉得翻字典很困难 除了 Python 官方
  • java.io.IOException:参数无效

    我有一个带有负载均衡器的以集群模式运行的 Web 应用程序 它由两个 Tomcat T1 和 T2 组成 仅寻址一个 DB T2 通过 nfs 安装到 T1 这是两个节点之间唯一的差异 我有一个生成一些文件的java方法 如果请求 在 T1
  • 无法设置音量,音量控制未转发到系统

    我尝试使用安卓MediaPlayer框架来发挥mp3 file 看到这个问题 在我设法使其工作后 我很快意识到 音量增大 减小事件被类捕获javafxports android KeyEventProcessor并且永远不会被转发 我试图规
  • 计算特定撞击角度的 box2d 冲量

    我有一个球 圆形的动态物体 它在重力条件下作用在表面 蹦床 上 当球撞击蹦床 图中从 A 点到 B 点绘制 时 我想向球施加一个脉冲 垂直于蹦床表面 问题是现在我使用 b2Vec2 impulse b2Vec2 0 self fullMas
  • Google 地图 API + Google 地图引擎/我的地图

    我已经使用 Google 地图引擎将带有图层和形状的自定义地图嵌入到我的网页中 但它即将停止使用 替代品是 Google 我的地图 它很轻量 但似乎可以满足我的需求 现在回答我的问题 我正在使用 Google 地图 API 在我的网页上显示
  • 检测文档就绪时自动填充的值

    我有一个登录页面 我试图在其中切换按钮的显示以允许用户修改其角色 从用户的可用角色列表中选择 我最初隐藏按钮并显示它 txtUsername blur 我的问题 有没有办法获取 Chrome 自动填充值 如果我尝试在文档准备好时触发它 则该
  • 从应用程序资源保存到 SD 卡的图像编号

    我的应用程序由天列表视图组成 每天都有其特定的图像放置在无限的图库类中 我想做的是 将具有序列号的图像从应用程序可绘制资源 无限图库类 保存到 SD 卡 我试图获取保存图像的顺序号 如下所示 第一张图片 Image 1 png 第二张图片