画像のアップロードには2 MBの制限があります。したがって、ユーザーが2 MBを超える画像をアップロードしようとすると、解像度を落とすことなくサイズを縮小したいと思います。
どうすればそれを達成できますか?私はこのようなことを試みましたが、うまくいきませんでした:
var fileSize = UIImageJPEGRepresentation(image, 1)!.length
print("before File size:")
print(fileSize)
while fileSize > MyConstants.MAX_ATTACHMENT_SIZE{
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
print("make smaller (fileSize)")
}
print("after File size:")
print(UIImageJPEGRepresentation(image, 1)!.length)
出力:
before File size:
2298429
make smaller 846683
after File size:
2737491
回答:
回答№1の場合は-1@Lionが言ったように、快適なファイルサイズを実現するには品質をいじる必要があります。しかし、私はそれに気づいた:
print(UIImageJPEGRepresentation(image, 1)!.length)
画像の長さを最高品質で印刷します。 while条件内では、ファイルサイズが小さくなっているため、これは誤解を招きます。
while fileSize > MyConstants.MAX_ATTACHMENT_SIZE{
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
print("make smaller (fileSize)")
}
回答№2の場合は-1
let mydata = UIImageJPEGRepresentation(image, 0.75)
fileSize = mydata!.length
image = UIImage(data: mydata!)!
これは正しいアプローチです。異なるスケールを設定できます 0.1 to 1
画像の品質とサイズをどれだけ削減したいか。
print(UIImageJPEGRepresentation(image, 1)!.length)
この線により、画像の品質とサイズまたは解像度が最大になります。 (because scale = 1)