iOS圖片處理-去掉背景色,截取有內容部分


iOS圖片處理-去掉背景色,截取有內容部分

出於個人愛好,做了一個小項目,期間遇到一個問題:
項目需要截屏,將截屏保存為一張圖片,后期展示。
功能已實現,非常簡單,,,,但發現問題,
1、截圖是整個屏幕大小是長方形,展示位置是正方形,平鋪時兩邊會黑邊
2、內容只有中間一部分,展示時內容會顯得很小。
處理思路:
1.展示位置背景和圖片背景搞成一樣(pass,因為圖片背景可能會變)
2.將圖片背景改成透明,形成png
3.將周圍無效的位置去掉,只保留中間有用的內容。

效果

圖片處理效果

原理

iOS自帶的庫
使用 CGImageCreateWithMaskingColors 進行背景透明功能
使用一系列算法加CGImageCreateWithImageInRect進行內容截取功能。

中間遇到的問題

使用 CGImageCreateWithMaskingColors 進行背景透明不生效,展示的圖片背景為白色(已解決)
截取內容不准確,明顯毛邊(已優化)
運行效率低(已優化)

方法 ImageTools.h

#import <UIKit/UIKit.h>

@interface ImageTools : NSObject
/**
 根據顏色生成圖片
 color
 size圖片大小

 例如 :
 [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;

/**
 移除圖片的顏色
 maxR
 minR
 maxG
 minG
 maxB
 minB
 這些參數為需要去除的顏色范圍
 如果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.size
 maxR
 minR
 maxG
 minG
 maxB
 minB
 這些參數為需要去除的顏色范圍
 如果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圖片處理封裝-內容截取

聯系作者

期待你的點贊和關注!如有疑問,聯系作者。
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM