sladuf
200
sladuf
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (83)
    • ๐Ÿ“š Programming (32)
      • Swift (13)
      • JAVA (2)
      • Python (6)
      • SQL (6)
      • Web (5)
    • ๐Ÿ“ฑ iOS (25)
      • Base (7)
      • SwiftUI (9)
      • UIKit (7)
      • ์ธ๊ฐ• & ์ฑ… (2)
    • ๐Ÿ”— Algorithm (20)
      • Python (12)
      • Swift (3)
      • Tip (5)
    • ๐Ÿ—‚ ETC (6)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์Šค์œ„ํ”„ํŠธ
  • Swift

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธ€์“ฐ๊ธฐ ์„ค์ •
hELLO ยท Designed By ์ •์ƒ์šฐ.
sladuf

200

[Swift] ์„œ๋ฒ„์— iOS ์ด๋ฏธ์ง€ ๋ณด๋‚ผ ๋•Œ ์šฉ๋Ÿ‰ ์ด์Šˆ & ํ•ด๊ฒฐ
๐Ÿ“ฑ iOS/Base

[Swift] ์„œ๋ฒ„์— iOS ์ด๋ฏธ์ง€ ๋ณด๋‚ผ ๋•Œ ์šฉ๋Ÿ‰ ์ด์Šˆ & ํ•ด๊ฒฐ

2023. 3. 23. 04:16

 

 

์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๊ตฌํ˜„์ค‘์— ์ƒ๊ธด ์ด์Šˆ

 

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๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด ์•ฝ ๋‘ ๋ฐฐ ์ •๋„ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐค๋Ÿฌ๋ฆฌ์—์„œ ์„ ํƒํ•œ 3๊ฐœ์˜ ์ด๋ฏธ์ง€ ํฌ๊ธฐ

๋ณด๋‹ค์‹œํ”ผ 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)

 

์ค„์—ฌ์ง„ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ

 

์ด์ƒ์ž…๋‹ˆ๋‹ค ๐Ÿ™ƒ

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ

'๐Ÿ“ฑ iOS > Base' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

UserDefaults ๊ฐ’ ํ•˜๋‚˜๋กœ ์•ฑ ์ง„์ž…์‹œ 1ํšŒ๋งŒ ๊ฒ€์‚ฌํ•˜๋Š” ๋กœ์ง ๊ด€๋ฆฌํ•˜๊ธฐ  (0) 2024.06.20
[Swift] ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ NetworkManager๋งŒ๋“ค๊ธฐ (feat. Generic)  (3) 2023.05.05
[Swift] json value type์ด ๋‹ฌ๋ผ์ง€๋Š” response์— ๋Œ€์‘ํ•˜์—ฌ API Responder๋งŒ๋“ค๊ธฐ  (0) 2023.02.12
[RxSwift] ๊ฐœ๋…์žก๊ธฐ (Subscribe, Observable, Subject)  (0) 2023.02.04
[Swift] Custom Calendar ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚  ๊ตฌํ•˜๊ธฐ  (0) 2023.01.16
    '๐Ÿ“ฑ iOS/Base' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • UserDefaults ๊ฐ’ ํ•˜๋‚˜๋กœ ์•ฑ ์ง„์ž…์‹œ 1ํšŒ๋งŒ ๊ฒ€์‚ฌํ•˜๋Š” ๋กœ์ง ๊ด€๋ฆฌํ•˜๊ธฐ
    • [Swift] ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ NetworkManager๋งŒ๋“ค๊ธฐ (feat. Generic)
    • [Swift] json value type์ด ๋‹ฌ๋ผ์ง€๋Š” response์— ๋Œ€์‘ํ•˜์—ฌ API Responder๋งŒ๋“ค๊ธฐ
    • [RxSwift] ๊ฐœ๋…์žก๊ธฐ (Subscribe, Observable, Subject)
    sladuf
    sladuf

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”