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

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

ios開發(fā)圖片,ios開發(fā)圖片壓縮

iOS開發(fā)所需圖片常規(guī)尺寸一覽

當(dāng)前日期2020年5月,Xcode版本為11.4。

創(chuàng)新互聯(lián)建站長期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為永春企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,永春網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

iPhone的項(xiàng)目圖標(biāo)尺寸要求

iPad的項(xiàng)目圖標(biāo)尺寸

詳細(xì)尺寸對(duì)照表

iPhone SE2代參數(shù)與iPhone8一致

iPhone SE1代參數(shù)與iPhone5一致

一些說明:

目前的劉海屏的手機(jī)有 iPhone X、XS、XSMax、 XR、 11、11Pro、11Pro Max 7款手機(jī),其中:

1.iPhone X、iPhone XS、iPhone 11 Pro三個(gè)機(jī)型尺寸參數(shù)一致,為375x812,5.8英寸,用@3x圖

2.iPhoneXR、iPhone11、iPhone XS Max、iPhone 11 Pro Max四個(gè)機(jī)型的屏幕尺寸參數(shù)一致,414x896,但是像素點(diǎn)不同,iPhoneXR、iPhone11用@2x圖,iPhone XS Max、iPhone 11 Pro Max用@3x圖

3.除了劉海屏的機(jī)型,非全面屏的機(jī)型寬高比約為0.563

iOS開發(fā) 支持哪些格式圖片

我知道的有jpg, png, gif三種格式,前兩張為靜態(tài)圖,gif為動(dòng)態(tài)圖,一般做加載動(dòng)畫。

對(duì)于靜態(tài)圖,當(dāng)iOS應(yīng)用構(gòu)建的時(shí)候,Xcode會(huì)通過一種方式優(yōu)化.png文件而不會(huì)優(yōu)化其它文件格式。

JPG,PNG的區(qū)別:

1.相同的分辨率,保存為png要比jpg大;

2.png圖片有alpha通道,因此它支持圖片透明,這點(diǎn)在ios開發(fā)中很重要;而jpg不支持透明;

3.Xcode會(huì)對(duì)png格式進(jìn)行優(yōu)化處理,而對(duì)于其他圖片不做處理;

如果你的圖片都是xcode本地就有,那就用png;如果圖片是從網(wǎng)絡(luò)上下載的,考慮到流量以及速度,可以考慮用jpg因?yàn)樗哂休^高的壓縮率,本地的png優(yōu)化由xcode幫你做;其他格式的需要在程序運(yùn)行時(shí)做優(yōu)化,更耗性能,如果你的圖片要求有較高的色彩飽和度、圖像質(zhì)量,那就用jpg。

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

在項(xiàng)目中經(jīng)常遇到要上傳圖片,如果直接上傳,那么會(huì)上傳比較大的圖片,導(dǎo)致費(fèi)流量,刷新時(shí)加載圖片時(shí)間過長,手機(jī)內(nèi)存占用率高等問題。

一、先來介紹下概念:

圖片的壓縮其實(shí)是倆概念,

1、是 “壓” 文件體積變小,但是像素?cái)?shù)不變,長寬尺寸不變,那么質(zhì)量可能下降,

2、是 “縮” 文件的尺寸變小,也就是像素?cái)?shù)減少。長寬尺寸變小,文件體積同樣會(huì)減小。

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

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

- (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 拿到上面矯正過的圖片,縮小圖片尺寸,調(diào)用下面方法傳入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的圖片再壓,這個(gè)方法可以重復(fù)壓

//調(diào)整大小

NSData *imageData =UIImageJPEGRepresentation(newImage,rate);

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

NSUIntegersizeOriginKB = sizeOrigin /1024;//多少KB

2.4 上傳頭像

調(diào)用后臺(tái)接口,把imageData二進(jìn)制數(shù)據(jù)上傳即可

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

[img]

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

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

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

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

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

還可以這樣先設(shè)置imageview的大, 在設(shè)置圖片

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

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

由此可看imageview的frame可以這樣設(shè)置

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

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

imageView.layer.masksToBounds = YES;

imageView.layer.cornerRadius=25;

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

imageView.layer.borderWidth=1;

這個(gè)圓角和邊框像view和label以及button的設(shè)置方式都是一樣的 當(dāng)然imageview也一樣

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

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

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

設(shè)置圖片內(nèi)容的布局方式 imageView.contentMode

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

imageView.contentMode = UIViewContentModeScaleAspectFit;

UIViewContentMode contentMode枚舉類型

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

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

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

? ? (4)? UIViewContentModeRedraw; ? ??重劃邊界變化(重設(shè) - 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; ? ?設(shè)置圖片透明度

???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; ? ?設(shè)置循環(huán)一次的時(shí)間

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

???[imageView startAnimating];? ? ? ? ? ? // 開始動(dòng)畫

???[imageView stopAnimating];? ? ? ? ? ? ? // 停止動(dòng)畫

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];????將圖片尺寸調(diào)整為與內(nèi)容圖片相同

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

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

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

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

UIImageJPEGRepresentation(image, compression)

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

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

為了達(dá)到壓縮的目的,這種方法是有損的,就是會(huì)降低圖片質(zhì)量。

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

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

iOS開發(fā) ,將多張圖片疊加繪制到一起

這種繪制是根據(jù)圖片的像素比例 等比例進(jìn)行繪制的,在選擇圖片和創(chuàng)建展示圖片的imageView 時(shí),注意查看尺寸 注:繪圖時(shí)使用 ?[UIScreen mainScreen].scale 可以是圖片更清晰?UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);//這樣就不模糊了

//圖片上添加文字 詳細(xì)版

- (UIImage*)text:(NSString*)text addToView:(UIImage*)image{

//設(shè)置字體樣式

UIFont*font = [UIFont fontWithName:@"Arial-BoldItalicMT"size:100];

NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:text];

[str addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, 1)];

[str addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:100] range:NSMakeRange(0, text.length)];

//? ? CGSize textSize = [text sizeWithAttributes:dict];

CGSize textSize = [str size];

//繪制上下文

UIGraphicsBeginImageContext(image.size);

//UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);//這樣就不模糊了

[image drawInRect:CGRectMake(0,0, image.size.width, image.size.height)];

//? ? int border =10;

CGRect re = {CGPointMake((image.size.width- textSize.width)/2, 200), textSize};

//? ? CGRect rect = CGRectMake(0, 0, image.size.width, 500);

//此方法必須寫在上下文才生效

[str drawInRect:re ];

UIImage*newImage =UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return newImage;

}

//修改圖片尺寸

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

{

// Create a graphics image context

UIGraphicsBeginImageContext(newSize);//這樣壓縮的圖片展示出來會(huì)很模糊

//UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);//這樣就不模糊了

//UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);//這樣就不模糊了

// Tell the old image to draw in this new context, with the desired

// new size

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

// Get the new image from the context

UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

// End the context

UIGraphicsEndImageContext();

// Return the new image.

return newImage;

}

//圓角

- (UIImage *) getRadioImaeg:(NSString *)imageName1{

UIImage *image1 = [UIImage imageNamed:imageName1];

UIGraphicsBeginImageContextWithOptions(image1.size, 0, 0);

CGContextRef ctx = UIGraphicsGetCurrentContext();

CGRect rect = CGRectMake(00, 0, image1.size.width, image1.size.width);

CGContextAddEllipseInRect(ctx, rect);

CGContextClip(ctx);

[image1 drawInRect:rect];

UIImage *img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;

}

//圖片疊加

- (UIImage *)addImage:(NSString *)imageName1 withImage:(NSString *)imageName2 {

UIImage *image1 = [UIImage imageNamed:imageName1];

UIImage *image2 = [self getRadioImaeg:@"333"];

UIGraphicsBeginImageContext(image1.size);

//UIGraphicsBeginImageContextWithOptions(image.size, NO, [UIScreen mainScreen].scale);//這樣就不模糊了

[image1 drawInRect:CGRectMake(0, 0, image1.size.width, image1.size.height)];

[image2 drawInRect:CGRectMake((image1.size.width - image2.size.width)/2,(image1.size.height - image2.size.height)/2, image2.size.width, image2.size.height)];

UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return resultingImage;

}


新聞名稱:ios開發(fā)圖片,ios開發(fā)圖片壓縮
鏈接URL:http://weahome.cn/article/dsopijg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部