Forgot to mention, I also tested passing an image created using UIImage(named:) 
to UIImageJPEGRepresentation, and it worked just fine on my real device.

I opened rdar://32829011 <rdar://32829011>, there is a test case in it, if 
you're interested.

> On 18 Jun 2017, at 5:45 PM, Glen Huang <hey...@gmail.com> wrote:
> 
> Thanks for the reply.
> 
> I'm sorry but I'm not familiar with the "usual debugging things" that can be 
> apply to UIImage. Is there any official document introducing the inner 
> workings of UIImage that I can read?
> 
> But following your advice, I did go check image.cgImage before passing it to 
> UIImageJPEGRepresentation, and it was not nil. Not sure what that implies.
> 
> Also it seems a common problem according to 
> https://stackoverflow.com/questions/17440741/uiimagepngrepresentation-returns-nil-data
>  
> <https://stackoverflow.com/questions/17440741/uiimagepngrepresentation-returns-nil-data>
> 
> I tried the solution involving UIGraphicsBeginImageContext, and it works.
> 
> I also tried simulator running iOS 10 (without using the solution), and it 
> works too. It only fails when running on a real device.
> 
> What more can I do to find the real cause?
> 
>> On 18 Jun 2017, at 1:29 PM, David Duncan <david.dun...@apple.com 
>> <mailto:david.dun...@apple.com>> wrote:
>> 
>> 
>>> On Jun 16, 2017, at 7:31 AM, Glen Huang <hey...@gmail.com 
>>> <mailto:hey...@gmail.com>> wrote:
>>> 
>>> Hi,
>>> 
>>> I'm trying to extract the JPEG data from a PHAsset. I did it like this:
>>> 
>>>           let fetchOptions = PHFetchOptions()
>>>           fetchOptions.sortDescriptors = [NSSortDescriptor(key: 
>>> "creationDate", ascending: true)]
>>>           let assets = PHAsset.fetchAssets(with: fetchOptions)
>>>           jpg(for: assets[0])
>>> 
>>> where jpg(for:) is
>>> 
>>>   func jpg(for asset: PHAsset) {
>>>       let size = CGSize(width: 100, height: 100)
>>>       PHImageManager.default().requestImage(for: asset, targetSize: size, 
>>> contentMode: .aspectFit, options: nil) { image, info in
>>>           if let image = image {
>>>               let jpg = UIImageJPEGRepresentation(image, 0.8)!
>>>           }
>>>       }
>>>   }
>>> 
>>> It works in the simulator running iOS 11, but fails on iPhone 5S every time 
>>> with
>>> 
>>> fatal error: unexpectedly found nil while unwrapping an Optional value
>>> 
>>> And the thing caused that error was the bang after the 
>>> UIImageJPEGRepresentation function.
>>> 
>>> I'm using Xcode 9 beta, Swift 4, new build system, and the phone runs iOS 
>>> 10.3.2
>>> 
>>> Any idea why that happens and how I can extract the JPEG data from PHAsset? 
>> 
>> There is no obvious reason why this should fail, but the usual debugging 
>> things apply – what are the quality of image? (image.CGImage can still be 
>> nil, even if image is not). Does UIImageJPEGRepresentation() fail in any 
>> other situations? Can you reproduce this without using PHAsset?
>> 
>>> 
>>> Thank you.
>>> _______________________________________________
>>> 
>>> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com 
>>> <mailto:Cocoa-dev@lists.apple.com>)
>>> 
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com 
>>> <http://lists.apple.com/>
>>> 
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/cocoa-dev/david.duncan%40apple.com 
>>> <https://lists.apple.com/mailman/options/cocoa-dev/david.duncan%40apple.com>
>>> 
>>> This email sent to david.dun...@apple.com
>> 
>> --
>> David Duncan
>> 
> 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to