美文网首页
Swift压缩图片到指定大小以内,尺寸和体积双压缩

Swift压缩图片到指定大小以内,尺寸和体积双压缩

作者: Tlsion小富 | 来源:发表于2023-04-24 14:22 被阅读0次

在Swift中,可以使用Core Graphics和Image I/O框架来实现图片的压缩。以下是将图片压缩到指定大小以内的示例代码:

func compressImage(image: UIImage, maxSize: Int) -> Data? {

    var compression: CGFloat = 1.0    let maxCompression: CGFloat = 0.1    let targetSize = CGSize(width: 1024, height: 1024) //指定尺寸    let scale = UIScreen.main.scale //根据设备屏幕缩放比例调整尺寸   

    var imageData = image.jpegData(compressionQuality: compression)

    var imageSize = imageData?.count ?? 0    var sizeExceeded = imageSize > maxSize

    while sizeExceeded && compression > maxCompression {

        compression -= 0.1        imageData = image.jpegData(compressionQuality: compression)

        imageSize = imageData?.count ?? 0        sizeExceeded = imageSize > maxSize

    }

    if let imageSource = CGImageSourceCreateWithData(imageData as CFData, nil) {

        let options: [CFString: Any] = [

            kCGImageSourceThumbnailMaxPixelSize: max(targetSize.width, targetSize.height) * scale,

            kCGImageSourceCreateThumbnailFromImageAlways: true,

            kCGImageSourceCreateThumbnailWithTransform: true        ]

        if let scaledImage = CGImageSourceCreateThumbnailAtIndex(imageSource, 0, options as CFDictionary) {

            if let scaledImageData = UIImage(cgImage: scaledImage).jpegData(compressionQuality: compression) {

                imageData = scaledImageData

            }

        }

    }

    return imageData

}

该函数的参数image是要压缩的图片,maxSize是指定的最大尺寸,单位为字节。该函数会先尝试将图片质量压缩到指定大小以内,如果仍然超过指定大小,则会将图片尺寸缩小到指定大小以内。

在上面的代码中,首先定义了压缩质量的初始值compression为1.0,最小压缩质量maxCompression为0.1。然后通过循环将压缩质量逐渐降低,直到图片大小不超过指定大小或者压缩质量降到最小值为止。

接着使用Core Graphics框架中的CGImageSourceCreateWithData函数创建了一个图片源imageSource,然后通过指定缩略图的最大像素大小和其他选项,使用CGImageSourceCreateThumbnailAtIndex函数创建了一个缩略图。最后再将缩略图转换为JPEG格式的二进制数据返回即可。

需要注意的是,上述代码中指定了缩略图的尺寸为1024x1024,可以根据实际需求进行调整。同时,该函数返回的是JPEG格式的二进制数据,可以根据需要进行存储或展示。

相关文章

  • 总结iOS开发中常用的辅助方法

    1.Keychain本地长期键值存储 2.压缩图片到指定尺寸大小 3.压缩图片到指定文件大小 4.截取全屏 5.判...

  • iOS 图片压缩限制大小最优解

    概要: 图片的两种压缩方法1.1 压缩图片质量1.2 压缩图片尺寸压缩图片使图片文件小于指定大小2.1 压缩图片质...

  • iOS 图片压缩限制大小

    概要: 1、图片的两种压缩方法 1.1 压缩图片质量 1.2 压缩图片尺寸2、压缩图片使图片文件小于指定大小 ...

  • iOS 压缩图片不失真

    下面这个方法的确能压缩图片,但是图片会变形 因为是按照指定尺寸压缩,导致图片压缩之后模糊,失真 按照屏幕的尺寸压缩...

  • 压缩并用 Alamofire 上传多张图片

    附:压缩图片尺寸并压缩图片大小

  • iOS 图片压缩 压缩到指定大小 质量和尺寸压缩

    有时候一些功能需要上传规定大小的图片,所以我们要对图片进行压缩。 思路:图片质量压缩 + 图片尺寸压缩首先对图片进...

  • iOS 图片压缩限制大小最优解

    iOS 图片压缩限制大小最优解 图片的两种压缩方法 1.1 压缩图片质量 1.2 压缩图片尺寸 压缩图片使图片文件...

  • iOS - 图片压缩

    1,图片尺寸压缩 方法举例: 2,尺寸不变,大小压缩 举例:ASI上传图片时, 3,QBImagePickerCo...

  • Android图片压缩

    主要有两种形式: 压缩图片的尺寸大小 压缩图片的质量(尺寸不变) 1.压缩尺寸 关键的在于设置options.in...

  • iOS图片压缩

    一般图片压缩的需求 压缩到指定宽高(例如:微信图片压缩,宽或者高不超过 1280 ) 压缩到指定大小(例如:微信小...

网友评论

      本文标题:Swift压缩图片到指定大小以内,尺寸和体积双压缩

      本文链接:https://www.haomeiwen.com/subject/jzpujdtx.html