2017-01-16 10 views
1

스위프트 3.0을 사용하여 내 UIImage를 프로그레시브 JPEG로 변환해야합니다. 내가 SWIFT 2.2에 다음 코드 발견 :스위프트 3.0에서 프로그레시브 JPEG로 이미지 변환

let sourceImage = UIImage(named: "example.jpg") 
let path = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString).stringByAppendingPathComponent("progressive.jpg") 
let fileUrl = NSURL(fileURLWithPath: path as String, isDirectory: true) 
let url = CFURLCreateWithString(kCFAllocatorDefault,fileUrl.absoluteString as CFString , nil) 
let destinationRef = CGImageDestinationCreateWithURL(url, kUTTypeJPEG, 1, nil) 
let jfifProperties = NSDictionary(dictionary: [kCGImagePropertyJFIFIsProgressive:kCFBooleanTrue]) 
let properties = NSDictionary(dictionary: [kCGImageDestinationLossyCompressionQuality:0.6,kCGImagePropertyJFIFDictionary:jfifProperties]) 
CGImageDestinationAddImage(destinationRef!, (sourceImage?.CGImage)!, properties) 
CGImageDestinationFinalize(destinationRef!) 

을하지만 빠른 3.0에서 작동하지 않습니다. CGImageDestinationCreateWithURL은 오류를 발생시킵니다 (모든 CGImage 클래스 ...) 어떤 도움이 필요합니까? 감사!

+0

"나는 다음과 같은 코드를 발견했다". 이해하지 못하는 코드는 사용하지 마십시오. – Sulthan

+0

도움 주셔서 감사합니다. 정말 감사! –

답변

1

스위프트 3에 대한 번역이 유사 할 것입니다 :

guard let sourceImage = UIImage(named: "example.jpg") else { 
    fatalError("Image could not be loaded") 
} 

let documentsUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
let targetUrl = documentsUrl.appendingPathComponent("progressive.jpg") as CFURL 

let destination = CGImageDestinationCreateWithURL(targetUrl, kUTTypeJPEG, 1, nil)! 
let jfifProperties = [kCGImagePropertyJFIFIsProgressive: kCFBooleanTrue] as NSDictionary 
let properties = [ 
    kCGImageDestinationLossyCompressionQuality: 0.6, 
    kCGImagePropertyJFIFDictionary: jfifProperties 
] as NSDictionary 

CGImageDestinationAddImage(destination, sourceImage.cgImage!, properties) 
CGImageDestinationFinalize(destination) 

필요한 모듈 수입을 잊지 마세요 :

import UIKit 
import ImageIO 
import MobileCoreServices 
+0

감사! 나는이 모듈을 가져 오는 것을 잊어 버렸습니다. btw이 코드를 이해 했습니까? 이 코드가 "sourceImage"를 데이터가있는 점진적 변환 코드로 변환합니까? –

+0

@MarcIbrahim 예, 압축률은 60 %입니다. – Sulthan