extension UIImage {
/// 限制图片为jpg,png 且小于某个尺寸
func isImageSizeExceedsLimit(limitInBytes: Int, allowedFormats: Set<String>) -> Bool {
guard let data = self.jpegData(compressionQuality: 1.0) ?? self.pngData() else {
return false // 无法获取图像数据
}
let dataSize = data.count
guard dataSize <= limitInBytes else {
return true // 大小超过限制
}
guard let imageFormat = data.imageFormat, allowedFormats.contains(imageFormat) else {
return true // 不支持的图像格式
}
return false
}
/// 限制图片为jpg,png
func isImageFormatLimit(allowedFormats: Set<String>) -> Bool {
guard let data = self.jpegData(compressionQuality: 1.0) ?? self.pngData() else {
return false // 无法获取图像数据
}
let dataSize = data.count
guard let imageFormat = data.imageFormat, allowedFormats.contains(imageFormat) else {
return true // 不支持的图像格式
}
return false
}
}
extension Data {
var imageFormat: String? {
var buffer = [UInt8](repeating: 0, count: 1)
copyBytes(to: &buffer, count: 1)
switch buffer {
case [0xFF]: return "jpg"
case [0x89]: return "png"
default: return nil
}
}
}
04-10
1573
06-09
2092