最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ios中圖像進(jìn)行壓縮方法匯總

 更新時(shí)間:2015年05月27日 11:24:49   投稿:hebedich  
在Iphone上有兩種讀取圖片數(shù)據(jù)的簡(jiǎn)單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數(shù)需要兩個(gè)參數(shù):圖片的引用和壓縮系數(shù).而UIImagePNGRepresentation只需要圖片引用作為參數(shù).

方法一:

復(fù)制代碼 代碼如下:

- (UIImage*)scaleFromImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
 CGSize imageSize = image.size;
 CGFloat width = imageSize.width;
 CGFloat height = imageSize.height;
     
 if (width <= newSize.width && height <= newSize.height){
  return image;
 }
     
 if (width == 0 || height == 0){
  return image;
 }
     
 CGFloat widthFactor = newSize.width / width;
 CGFloat heightFactor = newSize.height / height;
 CGFloat scaleFactor = (widthFactor<heightFactor?widthFactor:heightFactor);
     
 CGFloat scaledWidth = width * scaleFactor;
 CGFloat scaledHeight = height * scaleFactor;
 CGSize targetSize = CGSizeMake(scaledWidth,scaledHeight);
     
    UIGraphicsBeginImageContext(targetSize);
    [image drawInRect:CGRectMake(0,0,scaledWidth,scaledHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

方法二:

.h具體code

復(fù)制代碼 代碼如下:

#import <Foundation/Foundation.h> 
@interface UIImage (UIImageExt) 
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size; 
- (UIImage *)imageByScalingAndCroppingForSize:(CGSize)targetSize; 
@end 

.m具體code

復(fù)制代碼 代碼如下:

#import "UIImageExt.h" 
@implementation UIImage (UIImageExt) 
- (UIImage *)scaleToSize:(UIImage *)img size:(CGSize)size{ 
    // 創(chuàng)建一個(gè)bitmap的context 
    // 并把它設(shè)置成為當(dāng)前正在使用的context 
    UIGraphicsBeginImageContext(size); 
    // 繪制改變大小的圖片 
    [img drawInRect:CGRectMake(0, 0, size.width, size.height)]; 
    // 從當(dāng)前context中創(chuàng)建一個(gè)改變大小后的圖片 
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext(); 
    // 使當(dāng)前的context出堆棧 
    UIGraphicsEndImageContext(); 
    // 返回新的改變大小后的圖片 
    return scaledImage; 

- (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize 

    UIImage *sourceImage = self; 
    UIImage *newImage = nil; 
    CGSize imageSize = sourceImage.size; 
    CGFloat width = imageSize.width; 
    CGFloat height = imageSize.height; 
    CGFloat targetWidth = targetSize.width; 
    CGFloat targetHeight = targetSize.height; 
    CGFloat scaleFactor = 0.0; 
    CGFloat scaledWidth = targetWidth; 
    CGFloat scaledHeight = targetHeight; 
    CGPoint thumbnailPoint = CGPointMake(0.0,0.0); 
    if (CGSizeEqualToSize(imageSize, targetSize) == NO) 
    { 
        CGFloat widthFactor = targetWidth / width; 
        CGFloat heightFactor = targetHeight / height; 
        if (widthFactor > heightFactor) 
            scaleFactor = widthFactor; // scale to fit height 
        else 
            scaleFactor = heightFactor; // scale to fit width 
        scaledWidth  = width * scaleFactor; 
        scaledHeight = height * scaleFactor; 
        // center the image 
        if (widthFactor > heightFactor) 
        { 
            thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; 
        } 
        else 
            if (widthFactor < heightFactor) 
            { 
                thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; 
            } 
    } 
    UIGraphicsBeginImageContext(targetSize); // this will crop 
    CGRect thumbnailRect = CGRectZero; 
    thumbnailRect.origin = thumbnailPoint; 
    thumbnailRect.size.width  = scaledWidth; 
    thumbnailRect.size.height = scaledHeight; 
    [sourceImage drawInRect:thumbnailRect]; 
    newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    if(newImage == nil) 
        NSLog(@"could not scale image"); 
    //pop the context to get back to the default 
    UIGraphicsEndImageContext(); 
    return newImage; 

@end 

方法三:(本人項(xiàng)目中使用的方法)

復(fù)制代碼 代碼如下:

-(UIImage *) imageCompressForWidth:(UIImage *)sourceImage targetWidth:(CGFloat)defineWidth
{
    CGSize imageSize = sourceImage.size;
    CGFloat width = imageSize.width;
    CGFloat height = imageSize.height;
    CGFloat targetWidth = defineWidth;
    CGFloat targetHeight = (targetWidth / width) * height;
    UIGraphicsBeginImageContext(CGSizeMake(targetWidth, targetHeight));
    [sourceImage drawInRect:CGRectMake(0,0,targetWidth,  targetHeight)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • Swift 共享文件操作小結(jié)(iOS 8 +)

    Swift 共享文件操作小結(jié)(iOS 8 +)

    本文主要介紹IOS 共享文件,在這里給大家展示實(shí)例代碼供大家參考,希望能幫助開(kāi)發(fā)IOS的同學(xué)
    2016-07-07
  • Terminal該如何自定義提示詳解

    Terminal該如何自定義提示詳解

    這篇文章主要給大家介紹了關(guān)于Terminal如何自定義提示的相關(guān)資料,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • iOS實(shí)現(xiàn)音頻進(jìn)度條效果

    iOS實(shí)現(xiàn)音頻進(jìn)度條效果

    這篇文章主要介紹了ios實(shí)現(xiàn)音頻進(jìn)度條效果,本文寫(xiě)了一個(gè)小demo通過(guò)實(shí)例代碼相結(jié)合的形式給大家詳細(xì)介紹,需要的朋友可以參考下
    2018-10-10
  • iOS實(shí)現(xiàn)多控制器切換效果

    iOS實(shí)現(xiàn)多控制器切換效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)多控制器切換效果,帶滑動(dòng)動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 解決Flutter出現(xiàn)CocoaPods報(bào)錯(cuò)情況(Mac和IOS)

    解決Flutter出現(xiàn)CocoaPods報(bào)錯(cuò)情況(Mac和IOS)

    這篇文章主要為大家介紹了解決Flutter出現(xiàn)CocoaPods報(bào)錯(cuò)情況(Mac和IOS)的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Xcode8以及iOS10適配等常見(jiàn)問(wèn)題匯總(整理篇)

    Xcode8以及iOS10適配等常見(jiàn)問(wèn)題匯總(整理篇)

    隨著iOS 10的更新以及Xcdoe 8的更新出現(xiàn)了很多問(wèn)題,今天小編抽時(shí)間給大家整理下我遇到的坑特此分享到腳本之家平臺(tái),供大家參考
    2016-09-09
  • iOS開(kāi)發(fā)實(shí)現(xiàn)抽屜效果

    iOS開(kāi)發(fā)實(shí)現(xiàn)抽屜效果

    這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)實(shí)現(xiàn)抽屜效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Objective-C中關(guān)于實(shí)例所占內(nèi)存的大小詳解

    Objective-C中關(guān)于實(shí)例所占內(nèi)存的大小詳解

    這篇文章主要給大家介紹了關(guān)于Objective-C中實(shí)例所占內(nèi)存的大小的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位iOS開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • iOS中你需要的彈窗效果總結(jié)大全

    iOS中你需要的彈窗效果總結(jié)大全

    彈窗是app中常見(jiàn)控件之一,一般由于項(xiàng)目需求,我們很少能直接使用系統(tǒng)提供的彈窗,這個(gè)時(shí)候就需要我們根據(jù)產(chǎn)品需求封裝自定義彈窗了。下面這篇文章主要給大家介紹了關(guān)于iOS中你需要的彈窗效果的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • iOS實(shí)現(xiàn)高效裁剪圖片圓角算法教程

    iOS實(shí)現(xiàn)高效裁剪圖片圓角算法教程

    經(jīng)常看到各種高效裁剪圓角的文章,正好之前做過(guò)一點(diǎn)數(shù)字圖像處理,所以寫(xiě)個(gè)裁剪圓角的算法,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)高效裁剪圖片圓角算法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-06-06

最新評(píng)論

武威市| 黄梅县| 平乐县| 民乐县| 郸城县| 科技| 鄱阳县| 申扎县| 临海市| 陆丰市| 武乡县| 双流县| 襄城县| 山东| 新化县| 嘉祥县| 白沙| 佛山市| 庐江县| 团风县| 贡嘎县| 思茅市| 林周县| 五常市| 册亨县| 连山| 纳雍县| 杭锦旗| 长阳| 通榆县| 克什克腾旗| 洪雅县| 故城县| 扎兰屯市| 长汀县| 临桂县| 龙陵县| 皮山县| 鄂温| 青神县| 开封市|