0

UIImageJPEGRepresentationDocuments ディレクトリ内のファイルのパスと がどのように関連しているかについて、私は完全に混乱しています。

基本的に、ファイル パスからファイルを削除してから を呼び出すとUIImageJPEGRepresentationUIImagenil が返されますが、ファイル パスが削除されていない場合はUIImageJPEGRepresentation、画像のデータ表現が返されます。

私が何を意味するかを示すサンプルコードは次のとおりです。

func functionA()
{
    if imagePaths_ARRAY.isEmpty == false
    {
        for pathToDelete in imagePaths_ARRAY
        {
            if fileManager.fileExists(atPath: pathToDelete)
            {
                do
                {
                    try fileManager.removeItem(atPath: pathToDelete)
                }
                catch let error as NSError
                {
                    print(error.localizedDescription)
                }
            }
            else
            {
                print("ERROR")
            }
        }

        imagePaths_ARRAY.removeAll()
    }

    print(images_ARRAY)

    for image in images_ARRAY
    {
        print(image)

        if let imageData = UIImageJPEGRepresentation(image, 0.5)
        {
            print("RETURN GOOD")
            let imageName = getImageName()

            let imagePath = getDirectoryPath().appending("/" + imageName)

            let success = fileManager.createFile(atPath: imagePath, contents: imageData, attributes: nil)

            if success == true
            {
                imagePaths_ARRAY.append(imagePath)
            }
        }
        else
        {
            print("RETURN NIL")
        }

    }
}

非常に最初の時間functionA呼び出され、imagePaths_ARRAY空であるため、コードの内部ブロックは実行されません。の配列をループし、UIImages画像ごとに呼び出してオブジェクトUIImageJPEGRepresentationに変換し、Dataファイルに書き込みます。配列に を追加しimagePathimagePaths_ARRAY、コードの他の場所で使用します。

画像ごとにログがRETURN GOOD表示され、すべての画像がファイルに書き込まれます。

ただし、2回目functionAの呼び出しでは が空ではないため、 のパスからすべてのファイルを削除します。imagePaths_ARRAYimagePaths_ARRAY

しかしUIImageJPEGRepresentation、再度呼び出されると、imagenil が返されますか?

それぞれが私に有効な を与えるimageので、私はその理由について完全に混乱しています:images_ARRAYUIImage

[<UIImage: 0x600000085280> size {4288, 2848} orientation 0 scale 1.000000]

最初の文で述べたように、removeItem原因UIImageJPEGRepresentationを使用してファイルを削除すると nil が返される方法を知りたいです。

更新:代わりに置き換えるUIImageJPEGRepresentationUIImagePNGRepresentation、画像は問題なく圧縮されます。私は完全に混乱しています!

4

1 に答える 1