예제 #1
0
        partial void BtnClick(UIKit.UIButton sender)
        {
            PHFetchResult fetchResults = PHAsset.FetchAssets(PHAssetMediaType.Image, null);

            for (int i = 0; i < fetchResults.Count; i++)
            {
                //fetching Result
                PHAsset phAsset  = (PHAsset)fetchResults[i];
                String  fileName = (NSString)phAsset.ValueForKey((NSString)"filename");
                PHImageManager.DefaultManager.RequestImageData(phAsset, null, (data, dataUti, orientation, info) =>
                {
                    var path = (info?[(NSString)@"PHImageFileURLKey"] as NSUrl).FilePathUrl.Path;
                    //Stream stream = System.IO.OpenRead((String)path);

                    Stream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
                });
            }
        }
예제 #2
0
        static FileResult DictionaryToMediaFile(NSDictionary info)
        {
            if (info == null)
            {
                return(null);
            }

            PHAsset phAsset  = null;
            NSUrl   assetUrl = null;

            if (Platform.HasOSVersion(11, 0))
            {
                assetUrl = info[UIImagePickerController.ImageUrl] as NSUrl;

                // Try the MediaURL sometimes used for videos
                if (assetUrl == null)
                {
                    assetUrl = info[UIImagePickerController.MediaURL] as NSUrl;
                }

                if (assetUrl != null)
                {
                    if (!assetUrl.Scheme.Equals("assets-library", StringComparison.InvariantCultureIgnoreCase))
                    {
                        return(new UIDocumentFileResult(assetUrl));
                    }

                    phAsset = info.ValueForKey(UIImagePickerController.PHAsset) as PHAsset;
                }
            }

            if (phAsset == null)
            {
                assetUrl = info[UIImagePickerController.ReferenceUrl] as NSUrl;

                if (assetUrl != null)
                {
                    phAsset = PHAsset.FetchAssets(new NSUrl[] { assetUrl }, null)?.LastObject as PHAsset;
                }
            }

            if (phAsset == null || assetUrl == null)
            {
                var img    = info.ValueForKey(UIImagePickerController.OriginalImage) as UIImage;
                var imgUrl = info.ValueForKey(UIImagePickerController.ImageUrl) as NSString;

                if (img != null)
                {
                    var rotatedImg = CorrectImageRotation(img);

                    return(new UIImageFileResult(rotatedImg ?? img));
                }
            }

            if (phAsset == null || assetUrl == null)
            {
                return(null);
            }

            string originalFilename;

            if (Platform.HasOSVersion(9, 0))
            {
                originalFilename = PHAssetResource.GetAssetResources(phAsset).FirstOrDefault()?.OriginalFilename;
            }
            else
            {
                originalFilename = phAsset.ValueForKey(new NSString("filename")) as NSString;
            }

            return(new PHAssetFileResult(assetUrl, phAsset, originalFilename));
        }