1010cc时时彩标准版 > 操作系统 > 【1010cc时时彩标准版】UIImage初始化一张图片的方

原标题:【1010cc时时彩标准版】UIImage初始化一张图片的方

浏览次数:167 时间:2019-08-15

简单阐述下OC中UIImage三种创建方式~~~,ocuiimage

一. 直接使用imageNamed进行创建

 1 UIImage * image = [UIImage imageNamed:@"1.jpg"]; 

简单说一下这种方式的优缺点:

优点:代码量少,一行代码就可以搞定。当程序中多次加载这张图片时,系统会指向同一块内存,这样可以提升效率。

1010cc时时彩标准版,缺点:系统每次会将图片缓存到计算机的内存中去,如果图片非常大,非常多,会消耗很大的计算机内存,会出现卡顿的现象。

 

二.将本地图片转换成NSData类型存储

1     NSString *filePath = [[NSBundle mainBundle]pathForResource:@"1" ofType:@"jpg"];
2     NSData *imageData = [NSData dataWithContentsOfFile:filePath];
3     UIImage *image1 = [UIImage imageWithData:imageData];

优点:图片会被系统以数据的方式加载到程序中,当你不需要重复使用一个图片或者你需要加载大量的图片,不会大量消耗计算机内存,使用这种方式。

缺点:代码量较多,没有第一种简单。

 

三.通过NSURL获取网络图片

1     NSURL *url = [NSURL URLWithString:PATH];
2     NSData *imageData = [NSData dataWithContentsOfURL:url];
3     UIImage *image = [UIImage imageWithData:imageData];

上面的PATH是网络图片的地址。

这种方式的优缺点跟第二种应该是一样的,区别就在于获取图片的方式不一样。

 

写的东西非常简单,希望大家能够多多互相交流学习~谢啦~

 

一. 直接使用imageNamed进行创建 1 UIImage * image = [UIImage imageNamed: @"1 .jpg " ]; 简单说一下这种...

问题描述

图片资源放在Assets.xcassets中,分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象,但发生奇怪的情况,前者获取到图片对象,后者结果为nil。代码如下:

1.通过UIImage的类方法imageNamed:可以获取到图片对象。

UIImage *imge = [UIImage imageNamed:@"test.jpg"];

 

2.但通过UIImage的类方法imageWithContentsOfFile:得到img为nil

//NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"test.jpg" ofType:nil];
UIImage *imge = [UIImage imageWithContentsOfFile:path];

 

 

问题描述

图片资源放在Assets.xcassets中,分别用UIImage的类方法imageNamed和imageWithContentsOfFile获取图片对象,但发生奇怪的情况,前者获取到图片对象,后者结果为nil。代码如下:

1.通过UIImage的类方法imageNamed:可以获取到图片对象。

UIImage *imge = [UIImage imageNamed:@"test.jpg"];

 

2.但通过UIImage的类方法imageWithContentsOfFile:得到img为nil

//NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"jpg"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"test.jpg" ofType:nil];
UIImage *imge = [UIImage imageWithContentsOfFile:path];

 

 

IOS 多个UIImageView 加载高清大图时内存管理,iosuiimageview

当我们在某一个View  多个UIImageView,且UIImageView都显示的是高清大图,就有可能出现内存警告的问题。如果第一次进入这个view,没有发生内存警告,当再次进入这个view,如果上一次的内存没有及时释放,这一次次的累加,便可导致内存崩溃。

1,UIImage 加载图片的方式。
      如果是本地图片,尽量不要使用 [UIImage  imageNamed:nil]; 这种方式,如果使用这种方式加载,只要程序不退出,它便一直会在内存中。
     我们可以使用 :
                      NSString *path = [[NSBundlemainBundle]pathForResource:@'"图片的名字" ofType:@""];
                        UIImage *image = [UIImageimageWithContentsOfFile:path];

   那两者的优缺点就很明显了,[UIImage  imageNamed:nil]; 只需加载一次,它便在内存中,所以第二次加载速度很快。而第二种加载方式由于我们将它释放掉了,会再次加载。所以选用那种方式,依你情况而定。

2,上面说的第二种方式,虽然可以释放掉,但我们要告诉人家什么时候释放。也就是说,当前显示页面不是这个view时,我们便将它释放掉:

  • (void)viewWillDisappear:(BOOL)animated{
        [UIImageView removeFromSuperview];
        UiImageView = nil;
    }

当然,当我们再次进入这个view时,便要将移除掉的view再次添加进来

  • (void)viewDidAppear:(BOOL)animated{
       [self addSubView:UIImageView];
    }

3,上述两种方式,主要解决内存累加的问题。但如果第一次进入view,图片全部渲染在view上时,内存就崩溃了。那我们只能在图片上做文章了。我们加载的高清大图如果差不多都是3000*2000,也可能比这个还大,就算我们的程序是iPad App,iPad 4  的分辨率才多少,这些图远远大于设备的分辨率,完全是资源浪费,所以我们通常的一个做法,便是将这样的图以小尺寸渲染到view上。
推荐使用:

UIImage Resize.h, UIImage Resize.mExtends the UIImage class to support resizing (optionally preserving the original aspect ratio), cropping, and generating thumbnails.
UIImage RoundedCorner.h, UIImage RoundedCorner.mExtends the UIImage class to support adding rounded corners to an image.
UIImage Alpha.h, UIImage Alpha.mExtends the UIImage class with helper methods for working with alpha layers (transparencies).

常用方法:
UIImage *image 

UIImage *thumbImage = [imagethumbnailImage:140// This should the size of the view in collection view. example: myCell width is 20 and height is 20.
                                      transparentBorder:0
                                          cornerRadius:0
                                   interpolationQuality:kCGInterpolationMedium];       //生成缩略图

            // this "resizedimage" image is what you want to pass to setImage
            UIImage * resizedImage = [imageresizedImage:imageview.frame.sizeinterpolationQuality: kCGInterpolationLow];   //生成你想要尺寸的图

    造成的问题,要注意缩放的比例,不要导致图片变形,由于尺寸缩小,可能会导致图片模糊,注意缩小的尺寸。

   综上可见,每种方法有优点,有缺点。主要依据自己的开发情况,折中使用。

详细说明:

方法一、

UIImage *image = [UIImage imageNamed:@"test.png"];

这个方法创建的图片是从缓存里面获取的,先在缓存里查看,看是不是有这个图片,没有的话见图片添加到缓存再使用。有的话直接使用缓存里面的。在程序中,如果这个图片要在多个地方使用的话,建议使用这个方法。缺点是:一旦加入到缓存中就一直占用内存,不能被释放掉。

本文由1010cc时时彩标准版发布于操作系统,转载请注明出处:【1010cc时时彩标准版】UIImage初始化一张图片的方

关键词:

上一篇:windows系统路线境况变量,的变量的求证

下一篇:没有了