1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > iOS图片处理-去掉背景色 截取有内容部分

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

时间:2018-07-02 08:41:39

相关推荐

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

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.该文件为测试版本,仅做测试。如果需要正式版本,请联系作者

联系作者

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。