参考博客:swift 图片压缩

//
//  UIImage_extension.swift
//  F
//
//  Created by mac on 2022/3/30.
//enum ImageCopmpressSize {//压缩到100KB(1024*100字节)以内case one//压缩到200KB(1024*100字节)以内case two//压缩到300KB(1024*100字节)以内case three
}extension UIImage {//我们的项目就定不大于200KBfunc compressImage()->Data{compressImage(size: .two)}func compressImage(size:ImageCopmpressSize) -> Data{switch size {case .one:return compressImage(maxLength: 1024*100)case .two:return compressImage(maxLength: 1024*200)case .three:return compressImage(maxLength: 1024*300)default:break}}// 图片压缩 bytefunc compressImage(maxLength: Int) -> Data {// let tempMaxLength: Int = maxLength / 8let tempMaxLength: Int = maxLengthvar compression: CGFloat = 1guard var data = self.jpegData(compressionQuality: compression), data.count > tempMaxLength else { return self.jpegData(compressionQuality: compression)! }// 压缩大小var max: CGFloat = 1var min: CGFloat = 0for _ in 0..<6 {compression = (max + min) / 2data = self.jpegData(compressionQuality: compression)!if CGFloat(data.count) < CGFloat(tempMaxLength) * 0.9 {min = compression} else if data.count > tempMaxLength {max = compression} else {break}}var resultImage: UIImage = UIImage(data: data)!if data.count < tempMaxLength { return data }// 压缩大小var lastDataLength: Int = 0while data.count > tempMaxLength && data.count != lastDataLength {lastDataLength = data.countlet ratio: CGFloat = CGFloat(tempMaxLength) / CGFloat(data.count)print("Ratio =", ratio)let size: CGSize = CGSize(width: Int(resultImage.size.width * sqrt(ratio)),height: Int(resultImage.size.height * sqrt(ratio)))UIGraphicsBeginImageContext(size)resultImage.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))resultImage = UIGraphicsGetImageFromCurrentImageContext()!UIGraphicsEndImageContext()data = resultImage.jpegData(compressionQuality: compression)!}return data}}

我另外的相关博客:
ios swift5 UIImage和Data互转 通过url获取本地图片

iOS swift5 图片压缩 UIImage相关推荐

  1. iOS中图片压缩的常见方法

       开发中经常会碰到从手机相册中选择图片的需求,选择图片这个过程是一个消耗性能的过程,取决于手机图片的大小,如果手机像素非常高,图片的尺寸非常大,这个时候就会变得很消耗性能,比如一张图片5兆,这个时 ...

  2. ios swift5 UIImage和Data互转 通过url获取本地图片

    文章目录 1.示例 1.1 从打印结果可以看出,data转成image前count为206752字节,image.pngData()为1260163字节,image.jpegData(compress ...

  3. IOS 图片上传处理 图片压缩 图片处理

    提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. 使用UIImagePickerContr ...

  4. iOS优秀的图片压缩处理方案

    大家好,好久没有更新博客了.一个早9晚5点半的硬是上成了996.悲剧的加班狗! 背景: 最近遇到一个图片压缩的问题,项目需求压缩图片500k以内上传服务器,还要求图片要清晰一点.还有证明是图片500k ...

  5. 浅谈移动端图片压缩(iOS Android)

    在 App 中,如果分享.发布.上传功能涉及到图片,必不可少会对图片进行一定程度的压缩.笔者最近在公司项目中恰好重构了双端(iOS&Android)的图片压缩模块.本文会非常基础的讲解一些图片 ...

  6. iOS图片压缩成指定大小

    在iOS中涉及一些图片显示和处理问题,在实际中碰到过修改账户头像时上传头像出现 error = Error Domain=com.alamofire.error.serialization.respo ...

  7. 浅谈移动端图片压缩(iOS Android)

    在 App 中,如果分享.发布.上传功能涉及到图片,必不可少会对图片进行一定程度的压缩.笔者最近在公司项目中恰好重构了双端(iOS&Android)的图片压缩模块.本文会非常基础的讲解一些图片 ...

  8. (0031) iOS 开发之图片压缩

    1. Aspect单词的, 都会按照图片的宽高比来拉伸.这样会显示不全照片 2. Scale单词的,都会对图片进行拉伸(缩放); 3. 没有出现Scale单词的,都不会对图片进行拉伸; UIViewC ...

  9. java jpeg压缩解码_图片压缩(iOS)

    场景很简单,上传图片前压缩图片,节省流量和发图时间.最近看了看 iOS 的静态图片压缩,这里记个笔记.本人之前没学过 iOS 和 Swift,本文是一篇入门文章,描述不到位之处请大家多多批评斧正. ̄ω ...

最新文章

  1. linux uname 命令 打印系统信息
  2. [国嵌笔记][025][ARM指令分类学习]
  3. Python 正则模块的应用
  4. 【Flink】运行Flink 1.6.2 程序偶然报错 Premature end of GET request
  5. 三种常见的图像处理双三次插值算法
  6. (转)比特币该如何扩容
  7. 【历史上的今天】5 月 28 日:图灵提交划时代论文;DR DOS 的第一个版本发布;TrueCrypt 停止开发
  8. 解决数据库日志文件过大的问题
  9. TMS570-4-RTI_DWD看门狗
  10. it行业se是_CS、IT、SE到底有什么区别?
  11. 读书笔记012:《伤寒论》- 手少阳三焦经
  12. mysql中selec sum返回null的解决方法
  13. Android Studio Dolphin 稳定版正式发布
  14. 从Java 9 到 Java 17之Java 11
  15. 已知华氏求摄氏C语言,c语言:根据华氏温度求摄氏温度,并分析错误
  16. Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码
  17. DPI(dots per inch) PPI(pixel per inch) 求一张图片在某分辨率下的实际尺寸?求计算机显示器PPI? MFC按600dpi时的实际物理尺寸打印图片
  18. TWAIN学习笔记006 探索TWAIN之DS连接及扫描
  19. 20230210组会论文总结
  20. 【linux】linux 新建用户、用户组 以及为新用户分配权限

热门文章

  1. JavaEE——SpringMVC
  2. vue项目搭建,启动
  3. 魔兽抓包——BattleLAN原理分析
  4. 巧妙利用inf文件添加shift后门
  5. 2023中国AIGC应用研究报告 | 附120页报告下载
  6. 图书馆信息管理系统源代码
  7. Linux修改系统日期和时间
  8. 惹某人持续划水的开学第二周(习题+感悟)
  9. 端游下载的时候现在很多都是采用HTTP传输,为什么不是P2P传输?
  10. Spring、Spring MVC、Spring boot、Spring Cloud面试题(史上最全面试题,精心整理100家互联网企业,面试必过)