图像编号保存从应用程序的资源到SD卡 [英] Numbering of image saved from app resource to SD card

查看:137
本文介绍了图像编号保存从应用程序的资源到SD卡的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序,包括列表视图天每天寄予无限画廊类其特定的图像,什么即时试图做的是:

I have app consist of days listview each day has its specific images placed in an infinite gallery class , what im trying to do is:

保存图像序列号从应用程序绘制资源(无限画廊类)SD卡

我尝试获得保存的图像的序列号如下:

im trying to get the sequential number of saved images as below :

第一幅图像:图片-1.png

first image :Image-1.png .

第二个形象:图片-2.png

second image :Image-2.png .

第三图像:图片-3.png,

third image : Image-3.png ,

等所有dayes。

使用:

 Random generator = new Random();

这将导致:

第一期:保存图片用随机数字

first issue : saved images with random numbers .

第二个问题:它不是保存所有图片由用户选择保存到SD卡上还保存一些图像的两倍或三倍。

second issue : its not saving all images was choose by user to save to sd card also it save some of image twice or three times .

这是code这关系到保存图像的一部分:

 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; } }

感谢您的帮助。

thanks for your help .

推荐答案

从你的问题和意见,我可以理解你想要的图像n个保存到SD卡。

From your question and comments i can understand that you want to save n number of images to SDCard.

要保存按照步骤

第1步:获取你所需要的图像。确保你得到的图像列表正确位置。

STEP 1: Get All the Images you need. Make sure you getting the list of images correctly here.

第2步:计数在列表中的图像的数量并将其存储在variale

STEP 2: Count number of images in the list and store it in variale

      int numberOfImages = 15;// Get it dynamically 

第3步:现在循环它来存储顺序的所有图像

STEP 3: Now loop it to store all the images in sequential order

   //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();   

这种重复可以发生,如果你做任何事情错在你的第一个步骤。

The duplication can take place if you do any thing wrong in your first step.

修改 以存储顺序使用共享preferences全部图像保存最后保存的图像数量。

EDIT To Store All Images in Sequential Order Use SharedPreferences to Store last saved image number.

    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();   

这篇关于图像编号保存从应用程序的资源到SD卡的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆