blog.csdn.net/u010105969/article/details/52609922 最近在底牌项目中公司要求上传的牌谱宽度固定为750像素,首先想到的是改变上传图片的尺寸,下面的方法即可改变UIImage 代码: - (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize{ UIGraphicsBeginImageContext(CGSizeMake reSize.width, reSize.height)); [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)]; UIImage
/** color转image */ (UIImage)createImageWithColor: (UIColor)color { CGRect rect=CGRectMake(0.0f, 0.0f UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [color CGColor]); CGContextFillRect(context, rect); UIImage
需要把H5传递过来的base64保存为PDF文件,经解析,H5是直接把png转base64,保存下来的文件就算是重命名为【xxx.pdf】,依然还是没法在【文件.app】中打开,只能把base64转成UIImage ,再通过绘制PDF来进行保存 解决方案 先把base64Str转成UIImage UIImage * imgForBase64 = [UIImage imageFromBase64ToWithStr:self.base64Data ]; /// base64str->Image + (UIImage *)imageFromBase64ToWithStr:(NSString *)str{ NSString *base64Str alloc]initWithBase64EncodedString:base64Str options:NSDataBase64DecodingIgnoreUnknownCharacters]; UIImage *image = [[UIImage alloc]initWithData:decodeData]; return image; } 创建文件名和保存目录 ///文件夹根目录 NSString
需要把H5传递过来的base64保存为PDF文件,经解析,H5是直接把png转base64,保存下来的文件就算是重命名为【xxx.pdf】,依然还是没法在【文件.app】中打开,只能把base64转成UIImage ,再通过绘制PDF来进行保存 解决方案 先把base64Str转成UIImageUIImage * imgForBase64 = [UIImage imageFromBase64ToWithStr:self.base64Data ]; /// base64str->Image + (UIImage *)imageFromBase64ToWithStr:(NSString *)str{ NSString *base64Str alloc]initWithBase64EncodedString:base64Str options:NSDataBase64DecodingIgnoreUnknownCharacters]; UIImage *image = [[UIImage alloc]initWithData:decodeData]; return image; }///文件夹根目录 NSString * localFileDirectory
一、UIImage的size,scale属性 先想一个问题“一个图像的尺寸到底是多大呢?” 二、UIImage的几种初始化方法的对比 1、imageNamed:方法 imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些。它的加载流程如下: a. 三、UIImage的imageOrientation属性 UIImage有一个imageOrientation的属性,主要作用是控制image的绘制方向,共有以下8中方向: [ 复制代码 ](javascript 四、UIImage的几个draw方法 UIImage的几个draw方法是用来绘制图像的利器,为什么这样说呢? 下面是图像旋转和翻转的完整代码: image UIImage+Rotate_Flip.h image UIImage+Rotate_Flip.m 以上只是实现了图像的顺时针90°,逆时针90°,180°
*newData = [[NSData alloc] initWithBytes:bytes length:128]; NSLog(@"newData=%@",newData); NSData 与 UIImage NSData->UIImage UIImage *aimage = [UIImage imageWithData: imageData]; //例:从本地文件沙盒中取图片并转换为NSData NSString stringByAppendingPathComponent:name]; NSData *imageData = [NSData dataWithContentsOfFile: finalPath]; UIImage *aimage = [UIImage imageWithData: imageData]; UIImage-> NSData NSData *imageData = UIImagePNGRepresentation
UIImage 转 OpenCV cvMat: 1 - (cv::Mat)cvMatWithImage:(UIImage *)image 2 { 3 CGColorSpaceRef colorSpace image.CGImage); 19 CGContextRelease(contextRef); 20 21 return cvMat; 22 } OpenCV cvMat 转 UIImage : 24 - (UIImage *)UIImageFromCVMat:(cv::Mat)cvMat { 25 NSData *data = [NSData dataWithBytes:cvMat.data kCGRenderingIntentDefault //intent 55 ); 56 57 // Getting UIImage from CGImage 58 UIImage *finalImage = [UIImage imageWithCGImage:imageRef]; 59 CGImageRelease
2、像素点的拉伸 - (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger )topCapHeight; 这个函数我们可以用来拉伸类似QQ,微信的聊天气泡背景图,它的两个参数分别leftCapWidth和topCapHeight,这两个参数给定一个坐标,比如: UIImage * img= [UIImage imageNamed:@"11.png"]; img = [img stretchableImageWithLeftCapWidth:1 topCapHeight 有一点需要注意,这个方法默认使用的拉伸模式是区域复制,比如还是上面的图案,如下代码拉伸: UIImage * img= [UIImage imageNamed:@"11.png"]; img * img= [UIImage imageNamed:@"11.png"]; img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(1
UIImage 相应地增加了新的构造函数支持可变渲染。 lazy var variable: Double = 0 { didSet { // 新的构造函数,支持可变渲染 let image = UIImage symbolConfig) imageView.image = image } } // 配置图标的渲染颜色 let symbolConfig = UIImage.SymbolConfiguration in: .common) lazy var imageView: UIImageView = { let imageView = UIImageView(image: UIImage
图片的处理大概分 截图(capture), 缩放(scale), 设定大小(resize), 存储(save) 1.等比率缩放 - (UIImage *)scaleImage:(UIImage *) 在workspace的framework目录里添加这两个framework.在UIKit里,图像类UIImage和CGImageRef的画图操作都是通过Graphics Context来完成。 如果需要特定区域的图像,可以crop一下) CGImageRef screen = UIGetScreenImage(); UIImage* image = [UIImage imageWithCGImage (可以把当前View的layer,输出到一个ImageContext中,然后利用这个ImageContext得到UIImage) -(UIImage*)captureView: (UIView *)theView (UImage封装了CGImage, 互相转换很容易) UIImage* imUI=nil; CGImageRef imCG=nil; imUI = [UIImage initWithCGImage:
image 我们的图片是从阿里云那里获取的网络图片,需要把网络图片转化为UIImage,下面就是方法: +(UIImage *) getImageFromURL:(NSString *)fileURL { UIImage * result; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL ]]; result = [UIImage imageWithData:data]; return result; } ? *)compressImage:(UIImage *)image toByte:(NSUInteger)maxLength { // Compress by quality CGFloat *resultImage = [UIImage imageWithData:data]; if (data.length < maxLength) return resultImage;
*)imageByScalingAndCroppingForSize:(CGSize)targetSize image:(UIImage *)sourceImage { // UIImage 定义缩放图片的Category // UIImage+Scale.h @interfaceUIImage (scale) -(UIImage*)scaleToSize:(CGSize)size; @end 实现这个Category的定义 // UIImage+Scale.m #import"UIImage+Scale.h" @implementation UIImage (scale) -(UIImage 再看看sd_imageWithData:这个方法: + (UIImage*)sd_imageWithData:(NSData *)data { UIImage*image; NSString 所以,我们只需要在这边做处理即可: UIImage+MultiFormat添加一个方法: +(UIImage*)compressImageWith:(UIImage *)image { float
再看看sd_imageWithData:这个方法: + (UIImage*) sd_imageWithData: (NSData *)data { UIImage *image; NSString orientation: orientation]; } } return image; } 这个方法在UIImage+MultiFormat里面,是UIImage 所以,我们只需要在这边做处理即可: UIImage+MultiFormat添加一个方法: + (UIImage *) compressImageWith: (UIImage *)image 在SDWebImageDownloaderOperation的connectionDidFinishLoading方法里面的: UIImage *image= [UIImage sd_imageWithData (ForceDecode) + (UIImage*) decodedImageWithImage: (UIImage*)image { if (image.images) { /
alloc] initWithRootViewController:vcHome]; vcHome.title = @"首页"; vcHome.tabBarItem.image = [UIImage imageNamed:@"tabbar_home"]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage imageNamed:@"tabbar_home_highlighted"]; imageHome = [imageHome imageWithRenderingMode: = [UIImage imageNamed:@"tabbar_home_highlighted"]; imageHome = [imageHome imageWithRenderingMode imageNamed:image]; // 设置 tabbarItem 选中状态的图片(不被系统默认渲染,显示图像原始颜色) UIImage *imageHome = [UIImage
setFinishedSelectedImage:[UIImage imageWithImage:[UIImage imageNamed:@"1-1.jpg"] scaledToSize:CGSizeMake (25, 25)] withFinishedUnselectedImage:[UIImage imageWithImage:[UIImage imageNamed:@"1-2.jpg"] scaledToSize setFinishedSelectedImage:[UIImage imageWithImage:[UIImage imageNamed:@"1-1.jpg"] scaledToSize:CGSizeMake (25, 25)] withFinishedUnselectedImage:[UIImage imageWithImage:[UIImage imageNamed:@"1-2.jpg"] scaledToSize setFinishedSelectedImage:[UIImage imageWithImage:[UIImage imageNamed:@"1-1.jpg"] scaledToSize:CGSizeMake
(systemName name: String) } iOS13 之后可用,可选构造函数,返回的是 UIImage? 类型,传入的 name 是字符串,硬编码,不安全。 SFSafeSymbols A SF Symbol UIImage can now be initialized using the SFSymbol enum. This image is already unwrapped, so you get a UIImage instead of a UIImage? : UIImage(systemSymbol: .cCircle) UIImage(systemSymbol: SFSymbol.eCircleFill) UIImage(systemSymbol: . 中的 enum 去初始化一个已经解包好的 image,返回的是 UIImage,而不是 UIImage?
UIImage类并没有提供缩放图片需要用到的API,是不是觉得很吃惊?没关系,我们自己来添加一个。 定义缩放图片的Category // UIImage+Scale.h @interface UIImage (scale) -(UIImage*)scaleToSize:(CGSize)size ; @end 实现这个Category的定义 // UIImage+Scale.h #import "UIImage+Scale.h" @implementation UIImage (scale 绘制改变大小的图片 [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; // 从当前context中创建一个改变大小后的图片 UIImage *image = [UIImage imageNamed:@"myImage.png"]; // 更改图片大小 UIImage *scaledImage = [image scaleToSize:
*image = [UIImage imageNamed:imageName]; NSString *path = [[NSBundle mainBundle] pathForResource :imageName ofType:@"jpg"]; UIImage *image = [UIImage imageWithContentsOfFile:path]; cell.contentImageView.image 一种是: UIImage imageNamed:imageName 一种是: UIImage imageWithContentsOfFile:path 后面我再解释为什么需要对比这两种加载方式, 1>使用UIImage imageWithContentsOfFile:path image.png 2>使用UIImage imageNamed:imageName image.png 两种方式都实际滑动一分钟 *image = [UIImage imageWithContentsOfFile:path]; image = [UIImage decodedImageWithImage
//从网络下载图片 -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result ; NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]]; result = [UIImage imageWithData:data]; return result; } //将所下载的图片保存到本地 -(void) saveImage:(UIImage *)image withFileName @) is not recognized, use (PNG/JPG)", extension); NSLog(@"文件后缀不认识"); } } //读取本地保存的图片 -(UIImage , YES) objectAtIndex:0]; NSLog(@"保存路径:%@",documentsDirectoryPath); //Get Image From URL UIImage
单独拿来使用 使用 CGImageCreateWithImageInRect 进行剪切处理 我已经做成了一个小方法,会在最后给出链接,只需要导入,调用即可,我说一下处理步骤 001、将大图做成UIImage 已方便取值和处理 // 从大图片裁剪对应的小图片 UIImage *bigImage = [UIImage imageNamed:bigImageName]; 002、规则的小图片的宽和高 // 小图形的宽 UIImage* smallImage = [UIImage imageWithCGImage: smallImageRef]; 使用实例: ? 屏幕快照 2016-12-09 20.41.55.png 点击下载Demo 使用方法: 001、导入文件: #import "YoungCutImage.h" 002、调用类方法,用UIImage 接收返回值 #pragma mark X:横向第几个 Y:竖向第几个 wideCount:横向小图标的个数 heightCount:纵向小图标的个数 +(UIImage *)cutBigImageName