<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      IOS:批量導入圖片和視頻到模擬器的相冊

      批量導入圖片和視頻到模擬器的相冊

       

        IOS開發中我們經常會用到模擬器調試,模擬器有個主要的好處就是程序啟動塊,最重要的是如果沒有證書的話,我們就只能在模擬器上調試了。使用模擬器調試時我們可能碰到需要從系統相冊選擇圖片的情況,特別是做圖片處理類相關的程序時,更是經常用到。

        初始化情況下模擬器中的相冊中是空的,所以要想選擇,我們就得先導入一些圖片。通常的做法是將圖片直接拖拽到模擬器上,然后模擬器就會用safari打開,這個時候我們再長按圖片就會彈出保存到系統相冊的菜單了,這樣一個完整的圖片保存流程就完成了。但是這中方法有一個明顯的缺點就是效率太低,試想你要做圖片處理的話肯定得測試各種尺寸,各種比例的圖片,這樣一個個導入無疑是對程序員的一種摧殘。

        那么如何才能批量的導入圖片呢?

        我最開始的時候的想法是找到模擬器存放的目錄,然后定位到照片文件夾下面,直接把圖片拷貝進去不就搞定了。于是打開finder尋找到了模擬器的安裝路徑,比如6.1的模擬器的路徑就是: /Users/maple/Library/Application Support/iPhone Simulator/6.1/

        我們使用命令行進入這個目錄,并找到照片文件夾的路徑: /Users/maple/Library/Application Support/iPhone Simulator/6.1/Media/DCIM,然后將照片拷貝進去。本以為大功告成,結果重啟了模擬器以后發現系統相冊較之前毫無變化,想一想應該只因為我們只把圖片拷貝進去了,卻沒有更新系統相冊對應的數據庫。如果能在拷貝圖片的同時,更新系統相冊對應的數據庫,我猜應該就能搞定了,只是代價比較大,所以只好放棄。

        只好換別的方法了,記得以前做上一個項目的時候好像有一個API是可以保存圖片到系統相冊的,于是找到這個API: UIImageWriteToSavedPhotosAlbum。想著如果我建一個工程,把要加的圖片加到工程里面,然后在程序中通過遍歷這些圖片,一次調用UIImageWriteToSavedPhotosAlbum這個方法,所以的圖片不就全部導入到系統相冊了嗎?

        說做就做,先寫了一個簡單的函數試了一下,的確可以達到目的,然后繼續完善思路,添加了監測拷貝進度的功能,做了一個簡單的進度界面。

        關鍵的保存圖片的函數片段如下:

      - (void)saveMediaToCameraRoll
      {
          // // traverse the main bundle to find out all image files
          NSMutableArray *picArray = [NSMutableArray arrayWithCapacity:3];
          
          NSArray *jpgFiles = [[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil];
          [picArray addObjectsFromArray:jpgFiles];
          
          NSArray *pngArray = [[NSBundle mainBundle] pathsForResourcesOfType:@"png" inDirectory:nil];
          
          // exclude launch image of this project
          NSMutableArray *picExcludeDefault = [NSMutableArray arrayWithArray:pngArray];
          for (NSString *path in pngArray) {
              NSArray *pathCom = [path pathComponents];
              if ([pathCom containsObject:@"Default-568h@2x.png"]
                  || [pathCom containsObject:@"Default.png"]
                  || [pathCom containsObject:@"Default@2x.png"]) {
                  [picExcludeDefault removeObject:path];
              }
          }
          pngArray = picExcludeDefault;
          [picArray addObjectsFromArray:pngArray];
          
          // traverse the main bundle to find out all mov files
          NSMutableArray *videoArray = [NSMutableArray arrayWithCapacity:3];
          
          NSArray *movs = [[NSBundle mainBundle] pathsForResourcesOfType:@"mov" inDirectory:nil];
          [videoArray addObjectsFromArray:movs];
          
          _mediaItemCount = picArray.count + videoArray.count;
          
          if (delegate && [delegate respondsToSelector:@selector(saveToUtilStartCopy:)]) {
              [delegate saveToUtilStartCopy:_mediaItemCount];
          }
          
          // save pic to camera roll
          for (id item in picArray) {
              UIImage *img = [[UIImage alloc] initWithContentsOfFile:item];
              
              // Note:save to camera roll is async, so the later item may copy complete than previous item 
              UIImageWriteToSavedPhotosAlbum(img, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
              [img release];
          }
          
          // save video to camera roll
          for (id item in videoArray) {
              if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(item)) {
                  
                  // Note:save to camera roll is async, so the later item may copy complete than previous item
                  UISaveVideoAtPathToSavedPhotosAlbum(item, self, @selector(video:didFinishSavingWithError:contextInfo:), NULL);
              }
              else {
                  [self updateProcessWithError:[NSError errorWithDomain:@"copy video error" code:-1 userInfo:nil]];
              }
          }
      }

        忽略界面更新回調相關的邏輯,程序的主要流程如下:

        1)找到當前程序包中所有的圖片文件,注意這塊兒要排除掉工程自帶的圖片如Default.png等;

        2)對找到的所有圖片文件調用保存到系統相冊的函數。

        經過測試本程序可以實現批量導入圖片到系統相冊的功能,于是想著更進一步視頻是否也可以批量導入呢?經過查找發現也有一個API:  UISaveVideoAtPathToSavedPhotosAlbum,然后順便添加了批量導入視頻的功能,經過測試可以正常導入。

        整個工程的代碼在github上,地址: https://github.com/smileEvday/SvSaveToCameraRoll

        

      注:轉載請注明出處!歡迎大家加我QQ 1592232964,一起討論共同進步。

       

      posted on 2013-04-16 23:23  一片-楓葉  閱讀(12278)  評論(2)    收藏  舉報

      主站蜘蛛池模板: 亚洲av成人无网码天堂| 欧美乱大交aaaa片if| 亚洲国产日韩伦中文字幕| 国产三级精品三级在线看| 亚洲国产理论片在线播放| 婷婷四虎东京热无码群交双飞视频 | 亚洲综合久久国产一区二区| 免费观看一级欧美大| 国产999久久高清免费观看| 国产成人精品一区二区三区免费| 国产高清精品在线一区二区| 高清性欧美暴力猛交| 亚洲日韩中文字幕在线播放| 日本一区二区久久人妻高清| 久久精品夜夜夜夜夜久久| 日韩中文字幕免费在线观看| 国产精品黄在线观看免费| 九色精品国产亚洲av麻豆一| 国产精品中文av专线| 99精品日本二区留学生| 国产成人 综合 亚洲欧洲| 福利视频一区二区在线| 激情综合网一区二区三区| 久久精品国产99久久6| 在线观看亚洲欧美日本| 天堂av色综合久久天堂| 另类 专区 欧美 制服| 人人爽人人爽人人片a免费| 国产强奷在线播放免费| 91在线国内在线播放老师 | 国产美女在线精品免费观看| 欧产日产国产精品精品| 久久亚洲精品无码播放| 亚洲中文无码av永久不收费| 九九热久久只有精品2| 福利在线视频一区二区| 美女又黄又免费的视频| 日韩内射美女人妻一区二区三区| 日韩人妻少妇一区二区三区| 欧美精品国产综合久久| 亚洲欧美日韩高清一区二区三区|