์ด๋ฏธ์ง ์ ๋ก๋ ๊ตฌํ์ค์ ์๊ธด ์ด์
form-data๋ก ์์ดํฐ ์ฌ์ง์ฒฉ์ ์๋ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ ค๋ฉด JPEG๋ก ๋ณํํด์ผ ํฉ๋๋ค
์์ดํฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก HEIF ํ์ฅ์๋ก ์ฌ์ง์ ์ ์ฅํ๋๋ฐ, ์ด๋ ํธํ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ๋๋ค
์ด์จ๋ ์ฐ๋ฆฌ๋ PHPicker๋ฅผ ํตํด์ ์ฌ์ง์ฒฉ์ ์๋ ์ฌ์ง์ ๊ฐ์ ธ์ฌ ์ ์๊ณ ,
์ด๋ฅผ jpeg๋ก ๋ณํํ๊ธฐ ์ํด jpegData๋ฅผ ์ฌ์ฉํฉ๋๋ค
image.jpegData(compressionQuality: 1.0)
์ฌ์ค ๋ค์ 1.0์ ๊ธฐ๋ณธ๊ฐ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์๋ฌด ์๊ฐ์์ด ์ผ๋๋ฐ ์๋๋งค ์ด์๊ฐ ์๊ธธ์ค์ด์ผ...
Moya๋ฅผ ํตํด API ํต์ ์ ํ๋๋ฐ, ๊ณ์ ์ด๋ฐ ์๋ฌ๊ฐ ๋จ๋ ๊ฒ..
Failed to map data to a Decodable object.
postman์ผ๋ก ์์ดํฐ ์ฌ์ง์ฒฉ์ ์๋ ์ฌ์ง ์๋ฌด๊ฑฐ๋ ๋ฃ์ด์ ํ ์คํธ ํด๋ดค๋๋ ๋์ ์ฒ์๋ณด๋ ์๋ฌ์ ๋ง์ฃผํ์ต๋๋ค
๊ตฌ๊ธ๋ง ํด๋ณด๋ nginx๋ฅผ ๊ฑฐ์ณ์ ํ์ผ ์ ๋ก๋๋ฅผ ํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก 1M์ ์ฉ๋ ์ ํ์ด ์์์ต๋๋ค
HEIF์ ์ด๋ฏธ์ง ์ฉ๋์ 2M์ ๋์๊ณ ,
HEIF -> JPEG๋ก ๋ณํํ๋ฉด ์ฝ ๋ ๋ฐฐ ์ ๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฒ ๋ฉ๋๋ค.
๋ณด๋ค์ํผ 5M๋ฅผ ๋์ด๊ฐ๋ ์ฌ์ง๋ ์๊ณ .. ๊ทธ๋ ๋ค๊ณ ๊ทธ๋งํผ
์๋ฒ ๊ฐ๋ฐ์์๊ฒ ์ฉ๋์ ๋๋ ค๋ฌ๋ผ๊ณ ํ๊ธฐ์๋ ํฐ ์ด๋ฏธ์ง๋ ๋ณด๋ด๊ณ ๊ฐ์ ธ์ค๋๋ฐ ์๊ฐ๋ ์ค๋๊ฑธ๋ฆฌ๊ณ ๋ ์ ์ฅํ๋๋ฐ ๋น์ฉ๋ ๋์ด๋๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ๋จ ํ์ต๋๋ค.
๊ทธ๋์ ์ด๋ฏธ์ง๋ฅผ ์ค์ฌ์ ๋ณด๋ด์! ๋ ๊ฒฐ๋ก ์ ๋ด๋ ธ๊ณ ,
๋๋ฌด ๊ฐ๋จํ๊ฒ๋ compressionQuality ๊ฐ์ ์ค์ด๋ ๊ฒ์ผ๋ก ํด๊ฒฐํ ์ ์์์ต๋๋ค.
image.jpegData(compressionQuality: 0.1)
๋ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฌธ๋ ๋ชจ๋ ์ฌ์ง์ ํฌ๊ธฐ๊ฐ ๋์ผํ์ง๋ ์๋ค๋ณด๋ 0.1๋ก ๊ณ ์ ํด์ ์ค์ด๋ ๊ฒ๋ ์ด์๊ฐ ์๊ธธ ์ ์๋ค๊ณ ์๊ฐ์ด ๋ค์์ต๋๋ค
๊ทธ๋์ UIImage๋ฅผ extension ํด์ฃผ๊ธฐ๋ก ํ์ต๋๋ค
downscaleTojpegData๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ maxBytes ์ดํ๋ก ์ค์ ๋๋ค
์๋๋ฉด nil..~
extension UIImage {
public func downscaleTOjpegData(maxBytes: UInt) -> Data? {
var quality = 1.0
while quality > 0 {
guard let jpeg = jpegData(compressionQuality: quality)
else { return nil }
if jpeg.count <= maxBytes {
return jpeg
}
quality -= 0.1
}
return nil
}
}
1M์ดํ๋ก ์ค์ฌ์ ธ๋ผ!
image.downscaleTOjpegData(maxBytes: 1_000_000)
์ด์์ ๋๋ค ๐