투케이2K

526. (ios/swift5) [유틸 파일] resizeImage : UIImage Resize 이미지 리사이징 수행 본문

IOS

526. (ios/swift5) [유틸 파일] resizeImage : UIImage Resize 이미지 리사이징 수행

투케이2K 2024. 5. 1. 09:15

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : SWIFT5

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // MARK: - [이미지 리사이징 수행]
    // -----------------------------------------------------------------------------------------
    func resizeImage(image : UIImage, width: CGFloat, height: CGFloat, completion: @escaping (UIImage?)->()) {
        
        /*
        // -----------------------------------------
        [resizeImage 메소드 설명]
        // -----------------------------------------
        1. 이미지 리사이징 수행
        // -----------------------------------------
        2. 호출 방법 :
         
         let image = UIImage(named: "loading_bg")
         
         C_App().resizeImage(image: image!, width: 100, height: 100) {(result) in
             
         }
         
        // -----------------------------------------
        3. 리턴 예시 :
         
         UIImage 이미지
        // -----------------------------------------
        */

        
        // [변수 선언]
        var returnData: UIImage? = nil
        var M_Log = ""
        
        
        // [로직 처리 실시]
        DispatchQueue.main.async {
            
            if image != nil && width > 0 && height > 0 {
             
                let size = CGSize(width: width, height: height)
                
                let render = UIGraphicsImageRenderer(size: size)
                
                let renderImage = render.image { context in
                    image.draw(in: CGRect(origin: .zero, size: size))
                }
                
                if renderImage != nil && renderImage.size.width > 0 && renderImage.size.height > 0 {
                    
                    // [리턴 변수에 삽입]
                    returnData = renderImage
                    
                    M_Log = "[Success] :: 이미지 리사이징"
                    
                    S_Log._D_(description: "이미지 리사이징 수행", data: [
                        "INPUT [WIDTH] :: \(String(describing: width))",
                        "INPUT [HEIGHT] :: \(String(describing: height))",
                        "ORIGIN_IMAGE :: \(image)",
                        "RESIZE_IMAGE :: \(String(describing: returnData))",
                        "M_LOG :: \(M_Log)"
                    ])
                    
                    // [리턴 반환]
                    completion(returnData)
                    
                }
                else {
                    M_Log = "[Error] :: renderImage Is Null"
                    
                    S_Log._D_(description: "이미지 리사이징 수행 에러", data: [ "\(M_Log)" ])
                    
                    // [리턴 반환]
                    completion(returnData)
                }
                
            }
            else {
                M_Log = "[Error] :: Input Data Is Null"
                
                S_Log._D_(description: "이미지 리사이징 수행 에러", data: [ "\(M_Log)" ])
                
                // [리턴 반환]
                completion(returnData)
            }
            
        }
        
    }
 

[결과 출력]

 

 

반응형
Comments