【发布时间】:2017-02-01 15:34:23
【问题描述】:
我的应用需要使用 iPad 相机捕获纸质文档的快照,并将其传递给 Tiff 格式的 REST API。
我尝试使用“UIImagePickerController”捕获图像,并使用 CGImageDestinationRef 中的“kUTTypeTIFF”将其转换为 Tiff 格式。它会在 ipad pro12.9 中生成大约 20 到 30 MB 的未压缩图像。
现在我正在尝试使用各种格式压缩图像,但我很困惑,因为在 swift tiff 压缩中找不到指南。
语言:斯威夫特
拍照代码sn-p,
let chosenImage = info[UIImagePickerControllerOriginalImage] as! CGImage //2
let imgData = convertToTiffUsingUIImage(imgUI: info[UIImagePickerControllerOriginalImage] as! UIImage)
//Pass to REST
imageUploadRequest(imgData, uploadUrl: NSURL(string: "http://localhost:8080/user/service.jsp")!, param: ["userName": "xyz"])
self.dismissViewControllerAnimated(true, completion: nil);
转换为 tiff 图像
let key = kCGImagePropertyTIFFCompression
let value = 5
var keys = [ unsafeAddressOf(key) ]
var values = [ unsafeAddressOf(value) ]
var keyCallBacks = kCFTypeDictionaryKeyCallBacks
var valueCallBacks = kCFTypeDictionaryValueCallBacks
let cfDictionary = CFDictionaryCreate(kCFAllocatorDefault, &keys, &values, 1, &keyCallBacks, &valueCallBacks)
let data = NSMutableData()
let dr: CGImageDestinationRef = CGImageDestinationCreateWithData(data, kUTTypeTIFF, 1, cfDictionary)!
CGImageDestinationAddImage(dr, imgUI.CGImage!, nil);
CGImageDestinationFinalize(dr);
print(data.length);
if data.length > 0 {
UIImageWriteToSavedPhotosAlbum(UIImage(data:data)!, nil, nil, nil);
}
但这不会产生压缩图像。
谁能帮我快速理解 Tiff 文件压缩?
【问题讨论】:
-
AFAIK 您不能压缩 tiff 图像本身(tiff 未压缩,API 需要这种格式很奇怪),您可以做的是压缩(或 targz)文件并上传该文件, API 可能不会接受它。
-
@HAS 压缩 tiff 是一个东西,但 Cocoa 不支持它 AFAIK。
-
谢谢@matt,我不知道,所以我一直纠正:)