如何从PHImageFileURLKey获取图像

时间:2017-09-29 07:22:27

标签: ios swift phasset

我使用以下代码从照片中获取图片网址。

 int *nums;

 const int datacount = 10000;
  nums = malloc(sizeof(int) * datacount); 
  if (!nums) { 
    perror("Error allocating memory");
    abort();
  }

  memset(nums, 0, sizeof(int)*datacount);

  int cnt = 0;
  char line[64];


 while ((fgets(line, sizeof line, stdin) != NULL) && (line[0] !='\n') )    {

      if (sscanf(line, "%d", &nums[cnt]))
      {
         cnt++;
         fflush(stdout);
      } 

    }

通过使用此URL密钥,我想从照片中获取图像。我已搜索并找到下面的代码。但它仍无法正常工作。

1
6
5
4
2
3
8
7
\n

它返回nil.So请帮助我。如何使用URL密钥获取图像。

先谢谢..

1 个答案:

答案 0 :(得分:0)

getImage(assetUrl: URL) -> UIImage?方法中,您正在使用

    let asset = PHAsset.fetchAssets(withALAssetURLs: [assetUrl], options: nil)

此处assetUrl是您在使用AssetsLibrary时应该从中获取的网址。从iOS 9.0开始,不推荐使用此库。我们必须使用照片库。

顺便说一句,您已经在getAllImageURLs()方法中获取了所有图像(数据)。只需转换该方法即可获取所有图像并根据需要处理这些图像。您可以使用以下方法获取所有图像。

func getAllImages() -> [UIImage]?
{
    let imgManager = PHImageManager.default()
    let requestOptions = PHImageRequestOptions()
    requestOptions.isSynchronous = true

    let fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: true)]

    let fetchResult = PHAsset.fetchAssets(with: PHAssetMediaType.image, options: fetchOptions)

    var allImages = [UIImage]()

    for index in 0..<fetchResult.count
    {
        let asset = fetchResult.object(at: index) as PHAsset
        imgManager.requestImage(for: asset, targetSize: UIScreen.main.bounds.size, contentMode: .aspectFill, options: requestOptions, resultHandler: { (uiimage, info) in
            allImages.append(uiimage!)
        })
    }

    return allImages
}

注意:根据您的要求调整此方法。