尝试调整 Uiimage 大小时出现问题
Issue when trying resize a Uiimage
我有一个Uiimage(通常是透明的),我需要把它做成512x512,最大100kb。
我能够将大小调整为 512x512(但图像大约为 400kb),但是当我使用 jpegData(压缩质量:0.3)方法时,我失去了图像的透明度。
let imagePNG = image.jpegData(compressionQuality: 0.3)
try stickerPack.addSticker(imageData: imagePNG!, type: ImageDataExtension(rawValue: "png")!, emojis: [""])
有没有什么方法可以在不损失透明度的情况下缩小图片的大小?
你可以试试这个:
extension UIImage {
enum JPEGQuality: CGFloat {
case lowest = 0
case low = 0.25
case medium = 0.5
case high = 0.75
case highest = 1
}
func jpeg(_ quality: JPEGQuality) -> Data? {
return UIImageJPEGRepresentation(self, quality.rawValue)
}
}
(我之前在创建 WhatsApp 贴纸包时遇到过这个问题)
如果可能的话,你可以试试Google的WebP format. It is a file format to minimize the image size and not to lose the transparency. You can try the libwebp official library to compress and encode your image, but I recommend you to use YYImage. After installing YYImage,使用YYCGImageCreateEncodedWebPData()
创建你的CGImage(UIImage.cgImage?
)并将其压缩成WebP数据(更多准确地说,Unmanged<CFData>
).
希望对您有所帮助。
我有一个Uiimage(通常是透明的),我需要把它做成512x512,最大100kb。 我能够将大小调整为 512x512(但图像大约为 400kb),但是当我使用 jpegData(压缩质量:0.3)方法时,我失去了图像的透明度。
let imagePNG = image.jpegData(compressionQuality: 0.3)
try stickerPack.addSticker(imageData: imagePNG!, type: ImageDataExtension(rawValue: "png")!, emojis: [""])
有没有什么方法可以在不损失透明度的情况下缩小图片的大小?
你可以试试这个:
extension UIImage {
enum JPEGQuality: CGFloat {
case lowest = 0
case low = 0.25
case medium = 0.5
case high = 0.75
case highest = 1
}
func jpeg(_ quality: JPEGQuality) -> Data? {
return UIImageJPEGRepresentation(self, quality.rawValue)
}
}
(我之前在创建 WhatsApp 贴纸包时遇到过这个问题)
如果可能的话,你可以试试Google的WebP format. It is a file format to minimize the image size and not to lose the transparency. You can try the libwebp official library to compress and encode your image, but I recommend you to use YYImage. After installing YYImage,使用YYCGImageCreateEncodedWebPData()
创建你的CGImage(UIImage.cgImage?
)并将其压缩成WebP数据(更多准确地说,Unmanged<CFData>
).
希望对您有所帮助。