iOS swift5 图片压缩 UIImage
参考博客: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相关推荐
- iOS中图片压缩的常见方法
开发中经常会碰到从手机相册中选择图片的需求,选择图片这个过程是一个消耗性能的过程,取决于手机图片的大小,如果手机像素非常高,图片的尺寸非常大,这个时候就会变得很消耗性能,比如一张图片5兆,这个时 ...
- ios swift5 UIImage和Data互转 通过url获取本地图片
文章目录 1.示例 1.1 从打印结果可以看出,data转成image前count为206752字节,image.pngData()为1260163字节,image.jpegData(compress ...
- IOS 图片上传处理 图片压缩 图片处理
提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. 使用UIImagePickerContr ...
- iOS优秀的图片压缩处理方案
大家好,好久没有更新博客了.一个早9晚5点半的硬是上成了996.悲剧的加班狗! 背景: 最近遇到一个图片压缩的问题,项目需求压缩图片500k以内上传服务器,还要求图片要清晰一点.还有证明是图片500k ...
- 浅谈移动端图片压缩(iOS Android)
在 App 中,如果分享.发布.上传功能涉及到图片,必不可少会对图片进行一定程度的压缩.笔者最近在公司项目中恰好重构了双端(iOS&Android)的图片压缩模块.本文会非常基础的讲解一些图片 ...
- iOS图片压缩成指定大小
在iOS中涉及一些图片显示和处理问题,在实际中碰到过修改账户头像时上传头像出现 error = Error Domain=com.alamofire.error.serialization.respo ...
- 浅谈移动端图片压缩(iOS Android)
在 App 中,如果分享.发布.上传功能涉及到图片,必不可少会对图片进行一定程度的压缩.笔者最近在公司项目中恰好重构了双端(iOS&Android)的图片压缩模块.本文会非常基础的讲解一些图片 ...
- (0031) iOS 开发之图片压缩
1. Aspect单词的, 都会按照图片的宽高比来拉伸.这样会显示不全照片 2. Scale单词的,都会对图片进行拉伸(缩放); 3. 没有出现Scale单词的,都不会对图片进行拉伸; UIViewC ...
- java jpeg压缩解码_图片压缩(iOS)
场景很简单,上传图片前压缩图片,节省流量和发图时间.最近看了看 iOS 的静态图片压缩,这里记个笔记.本人之前没学过 iOS 和 Swift,本文是一篇入门文章,描述不到位之处请大家多多批评斧正. ̄ω ...
最新文章
- linux uname 命令 打印系统信息
- [国嵌笔记][025][ARM指令分类学习]
- Python 正则模块的应用
- 【Flink】运行Flink 1.6.2 程序偶然报错 Premature end of GET request
- 三种常见的图像处理双三次插值算法
- (转)比特币该如何扩容
- 【历史上的今天】5 月 28 日:图灵提交划时代论文;DR DOS 的第一个版本发布;TrueCrypt 停止开发
- 解决数据库日志文件过大的问题
- TMS570-4-RTI_DWD看门狗
- it行业se是_CS、IT、SE到底有什么区别?
- 读书笔记012:《伤寒论》- 手少阳三焦经
- mysql中selec sum返回null的解决方法
- Android Studio Dolphin 稳定版正式发布
- 从Java 9 到 Java 17之Java 11
- 已知华氏求摄氏C语言,c语言:根据华氏温度求摄氏温度,并分析错误
- Android基于Google Zxing实现二维码/条形码扫描、生成二维码/条形码
- DPI(dots per inch) PPI(pixel per inch) 求一张图片在某分辨率下的实际尺寸?求计算机显示器PPI? MFC按600dpi时的实际物理尺寸打印图片
- TWAIN学习笔记006 探索TWAIN之DS连接及扫描
- 20230210组会论文总结
- 【linux】linux 新建用户、用户组 以及为新用户分配权限