私は自分のコードでアンラップを減らそうとしていますが、必要でない場合はif let
のチェックを書いたくないこともあります。UIImagePickerControllerのイメージにCGImage値がない可能性はありますか?
私は、ユーザが自分のカメラで写真を撮ったり、電話ライブラリから写真を撮ったり、切り抜いたり圧縮したりするコードの特定の部分で、たくさんの力を入れていることに気付きました。
を私は
imagePickerController(picker: didFinishPickingMediaWithInfo:)
機能からアンラップ画像を強制:let pickedImage = info[UIImagePickerControllerOriginalImage] as! UIImage`
私は
imagePicker.mediaTypes = [kUTTypeImage as String]
を持っているので、私はこの1つについてかなり安心これは、すべての力を持つプロセスはアンラップです。私は
CGImageCreateWithImageInRect
を使用して画像をトリミングし、その最初のパラメータはCGImage
で、これを強制的にアンラップします。これは私の最大の前提であり、クラッシュしたことは一度もありませんが、安全ではないことはまだ分かっています。私が使用let cgImage = CGImageCreateWithImageInRect(pickedImage.CGImage!, cropRect) let croppedImage = UIImage(CGImage: cgImage)
UIImageJPEGRepresentation
NSData
を返しますが、画像が何CGImageRef
を持っていない場合nil
を返すかもしれません。以前の私の仮定に基づいて、私もアンラップを強制します。let jpegData = UIImageJPEGRepresentation(croppedImage, 0.85)
私は
jpegData
がnil
ではないと仮定したので、私は再びアンラップ力によって結果画像を作成します。let resultImage = UIImage(data: jpegData)!
TLDR:それはUIImagePickerController
は何CGImage
を持っていない画像を返すことは可能ですか?はいの場合は、ステップ1と2の間に小切手を追加して、CGImage
の値があるかどうかを確認します。それでも安全に他の手順の展開を強制できますか?
を取得していますか? – CodeChanger
@CodeChanger上記のすべてのコードは動作しています(これまでのところ)。私は将来、潜在的な問題を避けるために修正しようとしています。つまり、はい、私はpickedImageにデータを取得しています。 – budidino