iOS 圖片合成、圖片壓縮、圖片保存方法零散記錄

合成效果

最近再做一個(gè)工具,主要的核心有圖片裁剪、合成、和保存還有一個(gè)毛玻璃效果的處理。下面簡(jiǎn)單介紹一下核心的幾個(gè)問(wèn)題,以便后續(xù)查看。

關(guān)于圖片的的合成:

  • 合成圖片需要先有一塊“畫(huà)布”,通過(guò)合成最后生成一張 Image 圖片。
 UIGraphicsBeginImageContextWithOptions(<#CGSize size#>, <#BOOL opaque#>, <#CGFloat scale#>)
  • 解釋一下: 第一個(gè)參數(shù)表示所要?jiǎng)?chuàng)建的圖片的尺寸;第二個(gè)參數(shù)用來(lái)指定所生成圖片的背景是否為不透明,使用YES,背景圖片將變成黑色的,;第三個(gè)參數(shù)指定生成圖片的縮放因子,這個(gè)縮放因子與UIImage的scale屬性所指的含義是一致的。傳入0則表示讓圖片的縮放因子根據(jù)屏幕的分辨率而變化,所以我們得到的圖片不管是在單分辨率還是視網(wǎng)膜屏上看起來(lái)都會(huì)很好,也可以使用 [UIScreen mainScreen].scale 效果是一樣的。
  • 如果是網(wǎng)絡(luò)請(qǐng)求的圖片資源建議另開(kāi)線程組(GCD 的 Group 組),然后進(jìn)行合成。

Code


- (void)saveImage:(UIButton *)button{
    

    // 創(chuàng)建一個(gè)畫(huà)布設(shè)置畫(huà)布大小
    UIGraphicsBeginImageContextWithOptions(CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height), NO,[UIScreen mainScreen].scale);
    
    下面的這個(gè)方法合成圖片后,圖片的質(zhì)量會(huì)降低也就是會(huì)被“壓縮”(需要設(shè)置縮放因子,如上所述)
    //UIGraphicsBeginImageContext(CGSizeMake([UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.height));
    
    // 繪制圖片
    [self.backgroundImage.image drawInRect:self.backgroundImage.frame];
    [self.cropImage.image drawInRect:self.cropImage.frame];
    
    //獲取上下文中的圖片
    self.imageGrap = UIGraphicsGetImageFromCurrentImageContext();
    
    // 結(jié)束上下文
    UIGraphicsEndImageContext();
    
    // 圖片保存

    UIImageWriteToSavedPhotosAlbum(self.imageGrap, self, @selector(imageSavedToPhotosAlbum:didFinishSavingWithError:contextInfo:), nil);
    
    
}


  // 保存協(xié)議方法

- (void)imageSavedToPhotosAlbum:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
    NSString *message = @"保存";
    
    if (!error) {
        
        NSLog(@"保存成功");
        

    }else{
        
        message = [error description];
    }
    
    NSLog(@"message is %@",message);
    
}


關(guān)于圖片的毛玻璃

之前介紹過(guò) iOS 8.0 之后的毛玻璃效果,還有另外的解決方案為 2013 年 WWDC 上的一個(gè)類目文件可以用于處理圖片,達(dá)到毛玻璃效果。(WWDC 上發(fā)布的官方 sample 一個(gè) UIImage 的分類 UIImage+ImageEffects.h ,它不但可以制作毛玻璃效果圖片,而且可以調(diào)整模糊程度和顏色渲染。)

GitHub 下載: UIImage+ImageEffects
直接拷貝類目文件到工程文件即可。

這個(gè)類提供給了我們以下接口:不同的毛玻璃效果和自定義效果


- (UIImage *)applyLightEffect;
- (UIImage *)applyExtraLightEffect;
- (UIImage *)applyDarkEffect;
- (UIImage *)applyTintEffectWithColor:(UIColor *)tintColor;

- (UIImage *)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor *)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage *)maskImage;
- 

ps:使用圖片保存合成時(shí),處理過(guò)的圖片可以直接合成保存,如果使用系統(tǒng)的毛玻璃則無(wú)法生成帶毛玻璃的圖片,這個(gè)點(diǎn)需要注意

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 希望就是劈開(kāi)黑暗的那道光。
    蒹葭16閱讀 282評(píng)論 0 1
  • 早晨上班的路上,看到一個(gè)婚慶小店正在為迎親車做裝飾,雖然伴有淅瀝小雨,但喜慶的鮮花裝飾的紅心讓兩只萌寵更加可愛(ài),看...
    追求心靈的安逸閱讀 473評(píng)論 0 0
  • 今天看了央視的《朗讀者》節(jié)目,這一期的主題是,眼淚。 眼淚是無(wú)色的,但是又有著最豐富的生命的色彩。——董卿 節(jié)目中...
    一瓶花開(kāi)閱讀 321評(píng)論 0 2

友情鏈接更多精彩內(nèi)容