iOS图片处理-去掉背景色,截取有内容部分

出于个人爱好,做了一个小项目,期间遇到一个问题:
项目需要截屏,将截屏保存为一张图片,后期展示。
功能已实现,非常简单,,,,但发现问题,
1、截图是整个屏幕大小是长方形,展示位置是正方形,平铺时两边会黑边
2、内容只有中间一部分,展示时内容会显得很小。
处理思路:
1.展示位置背景和图片背景搞成一样(pass,因为图片背景可能会变)
2.将图片背景改成透明,形成png
3.将周围无效的位置去掉,只保留中间有用的内容。

效果

原理

iOS自带的库
使用 CGImageCreateWithMaskingColors 进行背景透明功能
使用一系列算法加CGImageCreateWithImageInRect进行内容截取功能。

中间遇到的问题

使用 CGImageCreateWithMaskingColors 进行背景透明不生效,展示的图片背景为白色(已解决)
截取内容不准确,明显毛边(已优化)
运行效率低(已优化)

方法 ImageTools.h

#import <UIKit/UIKit.h>@interface ImageTools : NSObject
/**根据颜色生成图片colorsize图片大小例如 :[btn setBackgroundImage:[ImageTools imageWithColor:color size:btn.bounds.size] forState:state];*/
+(UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size;/**设置图片真实圆角cornerRadius圆角大小*/
+(UIImage *)image:(UIImage *)image setRadius:(CGFloat)cornerRadius;/**改变图片真实大小targetSize真实大小*/
+(UIImage *)changeImage:(UIImage*)image ToSize:(CGSize)targetSize;/**移除图片的颜色maxRminRmaxGminGmaxBminB这些参数为需要去除的颜色范围如果color.r >=minR && color.r <=maxR && color.g >=minG && color.g <=maxG && color.b >=minB && color.b <=maxB就会被移除,设置为透明*/
+(UIImage *)removeColorWithMaxR:(float)maxR minR:(float)minR maxG:(float)maxG minG:(float)minG maxB:(float)maxB minB:(float)minB image:(UIImage *)image;/**保留图片的有效颜色区域,自适应大小适用场景。原图周围有一大片无用的白色或透明色,有效内容只在部分区域,需要将这部分区域截取出来将图片有效颜色保留,并计算出最小范围,截取最小范围为一张新图,newimage.size <= oldimage.sizemaxRminRmaxGminGmaxBminB这些参数为需要去除的颜色范围如果color.r >=minR && color.r <=maxR && color.g >=minG && color.g <=maxG && color.b >=minB && color.b <=maxB就会被保留,为有效内容,其他设置为透明*/
+(UIImage*)imageRemoverOtherColorWithMaxR:(float)maxR minR:(float)minR maxG:(float)maxG minG:(float)minG maxB:(float)maxB minB:(float)minB image:(UIImage*)image;
@end

使用

//背景透明
image = [ImageTools removeColorWithMaxR:minR minR:0.0f maxG:minG minG:0.0f maxB:minB minB:0.0f image:image];
//截取内容
image = [ImageTools imageRemoverOtherColorWithMaxR:230.0f minR:20.0f maxG:230.0f minG:20.0f maxB:230.0f minB:20.0f image:image];

文件

iOS图片处理封装-内容截取

ps.该文件为测试版本,仅做测试。如果需要正式版本,请联系作者

联系作者

期待你的点赞和关注!如有疑问,联系作者。

iOS图片处理-去掉背景色,截取有内容部分相关推荐

  1. 图片如何去掉背景色?如何使图片背景变透明?

    图片设计工作者常常需要用透明背景图片,如果下载的图片素材不是透明背景的话,就需要先用图片处理工具将图片背景变透明.下面我们就使用压缩图的图片去底色(https://www.yasuotu.com/bu ...

  2. iOS图片,视频上传视频内容旋转

    #前言 我最近在接手一个智能盒子的iOS应用,上面有一个功能是这样的.把你本地的照片和视频可以甩屏到你绑定的盒子上. 我的上一位前辈做的时候必须要求再同一个局域网,但是当我做的时候要求不同的局域网也要 ...

  3. ios 图片居中裁剪_iOS 根据UIImage 修改UIImageView Frame (包括截取图片中间部分)...

    iOS UIImageView 根据需求调整frame 1.图片的宽和高不相等,截取图片的中间部分,截取的部分Size明确 2.图片的宽度要等于其父视图的类的宽度,然后根据宽度计算高度,保证 图片不变 ...

  4. 图片转PDF,图片过长智能截取

    先将Base64位字符转成图片 /*** base64字符串转化成图片* @param imgStr Base64位编码* @return* @throws Exception*/public sta ...

  5. 大屏iPhone的适配 +iOS 图片尺寸要求

    摘自:http://blog.ibireme.com/2014/09/16/adapted_to_iphone6/ 苹果公司官网设计介绍到:Retina显示屏的超高像素密度已超过人眼能分辨的范围. R ...

  6. 图片怎么去掉背景变为透明?如何把图片的背景去掉?

    ​当我们制作海报.商品宣传图等内容时,经常会需要将图片底色变透明,那么怎么才能把图片去底色(https://www.yasuotu.com/pdfyasuo)呢?试试这款在线图片去底色工具,只需要简单 ...

  7. 微信小程序拍照截取取景框内容#canvas

    最近有个需求是拍照识别Vin码,为了识别准确度,要求前端只上传取景框内的内容给后端识别. 通过一天多的碰壁(微信开发者工具,懂的都懂),终于在各种论坛的各种不起眼的地方摸出了一套可以正常使用的流程. ...

  8. 照片直播 php,php直播源码,iOS 图片去背景

    php直播源码,iOS 图片去背景相关的代码 - (UIImage *)removeBackgroudWithImage: (UIImage *)image{ unsigned char *targe ...

  9. 直播视频app源码,IOS 图片滤镜效果处理

    直播视频app源码,IOS 图片滤镜效果处理 /*** 图片色彩滤镜处理** @param _inputImage 原始需要处理的图片* @param _saturation 饱和度(0.f - 2. ...

最新文章

  1. 表格table常见的边框设置和初步的立体效果
  2. reid 数据集 行人重拾别
  3. python调用C++之pybind11入门
  4. 《生命是什么》读书笔记
  5. UA MATH565C 随机微分方程III Ito Isometry
  6. 2.6 Go 读取CSV
  7. Java 堆内存优化
  8. jquery和zepto的扩展方法extend
  9. 辗转相除求最大公约数
  10. 前端学习(3299):自定义hook
  11. IAR下μCosIII移植心得
  12. Java多线程学习十七:读锁应该插队吗?什么是读写锁的升降级?
  13. Win-MASM64汇编语言-NEG指令
  14. 手机内存占用超过一半会不会卡?
  15. day21-字节流和字符流
  16. ios tabtar 使用方法_Appium界面自动化测试(13)(iOS/Python):元素定位及操作
  17. 《自动控制原理》个人笔记(来自ppt课件)
  18. python图像的手绘效果代码_Python项目1:实现将图片转化为手绘效果
  19. word生成html目录树,word将自定义目录做成模板
  20. C++数组连接求能被7整除的数

热门文章

  1. 太强了,今晚又找到一篇搞笑语录
  2. oracle 表跟踪,Oracle表变化趋势追踪记录
  3. AOPA无人机地面站考试为什么这么难
  4. PCoE卓越诊断学中心——NASA共享训练数据的资源站
  5. PIBOT移植ROS2记录(6)-imu的移植
  6. Java实现超级玛丽小游戏教程
  7. Mongo在Mac上安装及启用-简记
  8. H.264中的熵编码算法(主讲指数哥伦布编码)
  9. 程序员应不应该背锅?
  10. 独家对话黄仁勋:关于生成式AI、算力能耗的一些追问