真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯網站制作重慶分公司

ios開發(fā)圖片處理,ios 圖片處理軟件

iOS開發(fā)圖片壓縮的兩種方式2019-01-18

工作中遇到需要將圖片壓縮之后上傳的需求。經過多方查詢資料,目前總結出來兩種方式總結一下備用。

建網站原本是網站策劃師、網絡程序員、網頁設計師等,應用各種網絡程序開發(fā)技術和網頁設計技術配合操作的協同工作。成都創(chuàng)新互聯公司專業(yè)提供成都網站設計、成都做網站,網頁設計,網站制作(企業(yè)站、成都響應式網站建設公司、電商門戶網站)等服務,從網站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!

UIImageJPEGRepresentation(image, compression)

這個方法可以將iPhone拍攝的照片壓縮到幾百Kb的極限值,到極限值之后不管compression這個參數多小,該函數返回的數據大小都不會再改變。也就是說這個方法的壓縮是有最小值的,得到的是jpg格式。

另外有一個方法UIImagePNGRepresentation(#UIImage * _Nonnull image#)這個方法得到的數據會比之前那個方法得到的數據占用空間更大。

為了達到壓縮的目的,這種方法是有損的,就是會降低圖片質量。

這種方法的到的圖片,newSize越小質量越差,但是得到的圖片占用內存越小。設置多大的newSize自己斟酌決定。

綜合一下自己平常在開發(fā)中常用的就是,先使用第一種方法保持精度不變,compression選擇0.6或者0.7進行第一次壓縮,然后再用第二種方法進行尺寸壓縮,得到的就是我們最終想要的圖片。

【iOS】iOS開發(fā)之使用Mac自動操作制作@1x@2x@3x圖片(切圖)

iOS開發(fā)中,會要求導入@1x、@2x和@3x:

使用@1x格式: iPhone3GS

使用@2x格式: iPhone 4,4S,5,5S,5C,SE,6,6S,7,8,XR

使用@3x格式: iPhone 6Plus、6sPlus、7Plus、8Plus、X、XS、XS Max

這樣在開發(fā)過程中,將三種圖片(比如分別為1.png、1@2x.png和1@3x.png)導入到工程圖庫中的時候可以自動被識別為1x、2x和3x大小的圖片

可以利用Mac系統(tǒng)中自帶的服務自己 制作一個快速生成@1x、@2x和@3x圖片的功能

首先spotlight搜索Automator,然后按Enter打開

**新建文稿 **

選取文稿類型為 快速操作

在工作流程收到當前的后面選擇圖像文件

在左邊窗口的“操作”下,選擇“資源庫”中的“文件和文件夾”,將右側中的“給訪達項目重新命名”拖入最右側的大窗口中,(如果警告提示是否要增加一個“拷貝訪達項目”操作,選擇“不添加”),選擇“添加文本”,在輸入框中輸入【@3x】

拖入“復制訪達項目”

選擇左側“資源庫”中的照片,將“縮放圖像”拖入右側窗口(如果警告提示是否要增加一個“拷貝訪達項目”操作,選擇“不添加”),并選擇“按百分比”,輸入【66】

再拖入“文件和文件夾”下的“給訪達項目重新命名”,并選擇【替換文本】,查找【“】,以【僅基本名稱】;****再拖入“文件和文件夾”下的“給訪達項目重新命名”,并選擇【替換文本】,查找【@3x”的副本】,以【僅基本名稱】,替換成【@2x】

拖入“復制訪達項目”,選擇左側“資源庫”中的照片,將“縮放圖像”拖入右側窗口(如果警告提示是否要增加一個“拷貝訪達項目”操作,選擇“不添加”),并選擇“按百分比”,輸入【50】

再拖入“文件和文件夾”下的“給訪達項目重新命名”,并選擇【替換文本】,查找【“】,以【僅基本名稱】,再拖入“文件和文件夾”下的“給訪達項目重新命名”,并選擇【替換文本】,查找【@2x”的副本】,以【僅基本名稱】

然后保存,將“快速操作”存儲為“制作@2x@3x圖片”

每次使用的時候,只需選中圖片,選擇訪達 - 服務 - 制作@2x@3x圖片,****就會自動生成三個圖片:1.png、1@2x.png和1@3x.png

最終效果~

iOS 開發(fā)-UIImageViews(圖片)的使用

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bgImage"]];?

創(chuàng)建并設置默認圖, 也可以

UIImageView*imageView = [[UIImageView alloc] init];

imageView.image= [UIImageimageNamed:@"bgImage"];

還可以這樣先設置imageview的大, 在設置圖片

UIImageView*imageView = [[UIImageView alloc] initWithFrame:(CGRectMake(0,144,SCREEN_Width,50))];

imageView.image= [UIImageimageNamed:@"bgImage"];

由此可看imageview的frame可以這樣設置

imageView.frame=CGRectMake(0,144,SCREEN_Width,50);

通常我們使用的的imageview都會添加圓角邊框

imageView.layer.masksToBounds = YES;

imageView.layer.cornerRadius=25;

imageView.layer.borderColor = [UIColor blueColor].CGColor;

imageView.layer.borderWidth=1;

這個圓角和邊框像view和label以及button的設置方式都是一樣的 當然imageview也一樣

imageView.backgroundColor= [UIColorclearColor]; 圖片設置背景顏色, 我通常使用clearColor ?透明

?imageView.userInteractionEnabled = YES; 圖片設置成可交互, 設置為NO則不能交互

[self.viewaddSubview: imageView]; 添加視圖也可叫做顯示視圖

設置圖片內容的布局方式 imageView.contentMode

這個屬性是用來設置圖片的顯示方式,如居中、居右,是否縮放等

imageView.contentMode = UIViewContentModeScaleAspectFit;

UIViewContentMode contentMode枚舉類型

? ? (1)? UIViewContentModeScaleToFill; ? ??默認,對圖片進行拉伸處理(不是按比例),是充滿bouns

? (2)? UIViewContentModeScaleAspectFit; ? ??按原圖比例進行拉伸,是圖片完全展示在bouns中

? ? (3)? UIViewContentModeScaleAspectFill; ? ??按原圖比例填充,使圖片展示在bouns中,可能只顯示部分

? ? (4)? UIViewContentModeRedraw; ? ??重劃邊界變化(重設 - setNeedsDisplay)

? ? (5)? UIViewContentModeCenter; ? ??圖片顯示在imageview的正中間,原圖大小

? ? (6)? UIViewContentModeTop; ? ??圖片顯示在imageview的上部,原圖大小

? ? (7)? UIViewContentModeBottom; ? ??圖片顯示在imageview的下部,原圖大小

? ? (8)? UIViewContentModeLeft; ? ??圖片顯示在imageview的左部,原圖大小

? ? (9)? UIViewContentModeRight; ? ??圖片顯示在imageview的右部,原圖大小

? ? (10)? UIViewContentModeTopLeft; ? ??圖片顯示在imageview的左上部,原圖大小

? ? (11)? UIViewContentModeTopRight; ? ??圖片顯示在imageview的右上部,原圖大小

? ? (12)? UIViewContentModeBottomLeft; ? ??圖片顯示在imageview的左下部,原圖大小

? ? (13)? UIViewContentModeBottomRight; ? ??圖片顯示在imageview的右下部,原圖大小

imageView.alpha = 1.0; ? ?設置圖片透明度

???NSString *path1 = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"];

???NSString *path2 = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"jpg"];

???NSString *path3 = [[NSBundle mainBundle] pathForResource:@"3" ofType:@"jpg"];

???imageView.animationImages = @[[UIImage imageWithContentsOfFile:path1],[UIImage imageWithContentsOfFile:path2],[UIImage imageWithContentsOfFile:path3]];

???imageView.animationDuration = 5.0f; ? ?設置循環(huán)一次的時間

???imageView.animationRepeatCount = 0;? ? // 設置循環(huán)次數(0為無線循環(huán))

???[imageView startAnimating];? ? ? ? ? ? // 開始動畫

???[imageView stopAnimating];? ? ? ? ? ? ? // 停止動畫

NSData *imageData = [NSData dataWithContentsOfFile:path];

UIImage *image4 = [UIImage imageWithData:imageData];

NSString *path = [[NSBundle mainBundle] pathForResource:@"1" ofType:@"jpg"];

UIImage *image2 = [UIImage imageWithContentsOfFile:path];

ImageView.hidden?=?NO;????隱藏或者顯示圖片?YES為隱藏

[ImageView?sizeToFit];????將圖片尺寸調整為與內容圖片相同

UITapGestureRecognizer?*singleTap = [[UITapGestureRecognizer?alloc]?initWithTarget:self?action:@selector(tapImageView:)];?//?設置手勢

[ImageView?addGestureRecognizer:singleTap];?//?給圖片添加手勢

iOS 開發(fā)中的圖片壓縮

在項目中經常遇到要上傳圖片,如果直接上傳,那么會上傳比較大的圖片,導致費流量,刷新時加載圖片時間過長,手機內存占用率高等問題。

一、先來介紹下概念:

圖片的壓縮其實是倆概念,

1、是 “壓” 文件體積變小,但是像素數不變,長寬尺寸不變,那么質量可能下降,

2、是 “縮” 文件的尺寸變小,也就是像素數減少。長寬尺寸變小,文件體積同樣會減小。

二、解決方法(以上傳頭像為例),先縮再壓:

2.1 矯正圖片方向(照片是有方向的,避免出現“倒立”的情況)

- (UIImage*)fixOrientation:(UIImage*)aImage {

// No-op if the orientation is already correct

if(aImage.imageOrientation==UIImageOrientationUp)

returnaImage;

// We need to calculate the proper transformation to make the image upright.

// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.

CGAffineTransformtransform =CGAffineTransformIdentity;

switch(aImage.imageOrientation) {

caseUIImageOrientationDown:

caseUIImageOrientationDownMirrored:

transform =CGAffineTransformTranslate(transform, aImage.size.width, aImage.size.height);

transform =CGAffineTransformRotate(transform,M_PI);

break;

caseUIImageOrientationLeft:

caseUIImageOrientationLeftMirrored:

transform =CGAffineTransformTranslate(transform, aImage.size.width,0);

transform =CGAffineTransformRotate(transform,M_PI_2);

break;

caseUIImageOrientationRight:

caseUIImageOrientationRightMirrored:

transform =CGAffineTransformTranslate(transform,0, aImage.size.height);

transform =CGAffineTransformRotate(transform, -M_PI_2);

break;

default:

break;

}

switch(aImage.imageOrientation) {

caseUIImageOrientationUpMirrored:

caseUIImageOrientationDownMirrored:

transform =CGAffineTransformTranslate(transform, aImage.size.width,0);

transform =CGAffineTransformScale(transform, -1,1);

break;

caseUIImageOrientationLeftMirrored:

caseUIImageOrientationRightMirrored:

transform =CGAffineTransformTranslate(transform, aImage.size.height,0);

transform =CGAffineTransformScale(transform, -1,1);

break;

default:

break;

}

// Now we draw the underlying CGImage into a new context, applying the transform

// calculated above.

CGContextRefctx =CGBitmapContextCreate(NULL, aImage.size.width, aImage.size.height,

CGImageGetBitsPerComponent(aImage.CGImage),0,

CGImageGetColorSpace(aImage.CGImage),

CGImageGetBitmapInfo(aImage.CGImage));

CGContextConcatCTM(ctx, transform);

switch(aImage.imageOrientation) {

caseUIImageOrientationLeft:

caseUIImageOrientationLeftMirrored:

caseUIImageOrientationRight:

caseUIImageOrientationRightMirrored:

CGContextDrawImage(ctx,CGRectMake(0,0,aImage.size.height,aImage.size.width), aImage.CGImage);

break;

default:

CGContextDrawImage(ctx,CGRectMake(0,0,aImage.size.width,aImage.size.height), aImage.CGImage);

break;

}

CGImageRef cgimg =CGBitmapContextCreateImage(ctx);

UIImage *img = [UIImageimageWithCGImage:cgimg];

CGContextRelease(ctx);

CGImageRelease(cgimg);

return img;

}

2.2 拿到上面矯正過的圖片,縮小圖片尺寸,調用下面方法傳入newSize,如(200,200):

+ (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize

{

UIGraphicsBeginImageContext(newSize);

[imagedrawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

UIImage* newImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

}

2.3 將2.2的圖片再壓,這個方法可以重復壓

//調整大小

NSData *imageData =UIImageJPEGRepresentation(newImage,rate);

NSUIntegersizeOrigin = [image Datalength];//多少KB

NSUIntegersizeOriginKB = sizeOrigin /1024;//多少KB

2.4 上傳頭像

調用后臺接口,把imageData二進制數據上傳即可

總結:對圖片壓縮處理時,在保證圖片清晰度變化不大時,減小圖片文件大小。方法2.2中的newSize 和 2.3中的rate要以實際效果來設置,我在自己項目中上傳的頭像最終尺寸是200*200像素,大小為4KB左右。


當前文章:ios開發(fā)圖片處理,ios 圖片處理軟件
分享路徑:http://weahome.cn/article/dsdodge.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部