UIImageJPEGRepresentation
Documents ディレクトリ内のファイルのパスと がどのように関連しているかについて、私は完全に混乱しています。
基本的に、ファイル パスからファイルを削除してから を呼び出すとUIImageJPEGRepresentation
、UIImage
nil が返されますが、ファイル パスが削除されていない場合は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
ファイルに書き込みます。配列に を追加しimagePath
てimagePaths_ARRAY
、コードの他の場所で使用します。
画像ごとにログがRETURN GOOD
表示され、すべての画像がファイルに書き込まれます。
ただし、2回目functionA
の呼び出しでは が空ではないため、 のパスからすべてのファイルを削除します。imagePaths_ARRAY
imagePaths_ARRAY
しかしUIImageJPEGRepresentation
、再度呼び出されると、image
nil が返されますか?
それぞれが私に有効な を与えるimage
ので、私はその理由について完全に混乱しています:images_ARRAY
UIImage
[<UIImage: 0x600000085280> size {4288, 2848} orientation 0 scale 1.000000]
最初の文で述べたように、removeItem
原因UIImageJPEGRepresentation
を使用してファイルを削除すると nil が返される方法を知りたいです。
更新:代わりに置き換えるUIImageJPEGRepresentation
とUIImagePNGRepresentation
、画像は問題なく圧縮されます。私は完全に混乱しています!