怎么获得uiimage 文件大小的大小

如何得到UIImage的大小_百度知道
如何得到UIImage的大小
提问者采纳
 width * height * bitsPerPixel / 8
bitsPerPixel可以用CGImage的 CGImageGetBitsPerPixel 函数获取,  大部分情况下BPP默认是 32 Bit
来自团队:
其他类似问题
等待您来回答
为您推荐:
下载知道APP
随时随地咨询
出门在外也不愁如何使用Xcode编写代码检测图像的大小呢?
- 移动改变生活!
如何使用Xcode编写代码检测图像的大小呢?
如何使用Xcode编写代码检测图像的大小呢?大神们能告诉我么?
UIImage有个size属性的,可以直接获得图片的高度和宽度
其他回答 (2)
UIImageView imageView = [[UIImageView alloc] initWithImage:[[UIImage alloc] initWithData:/*image path */];NSLog(@&photoLoaderDidLoad: self.frame %@&,NSStringFromCGRect(imageView.frame));
UIImage有个size属性的,可以直接获得图片的高度和宽度
相关知识等待您来回答
该问题来自:<移动开发社区编程领域专家UIImage 图片处理:截图,缩放,设定大小,存储 - xuhuan_wh的专栏
- 博客频道 - CSDN.NET
30137人阅读
图片的处理大概分 截图(capture), &缩放(scale), 设定大小(resize), &存储(save)
1.等比率缩放
- (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize
UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize);
[image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return scaledI
2.自定长宽
- (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize
UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));
[image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return reSizeI
3.处理某个特定View
只要是继承UIView的object 都可以处理
必须先import QuzrtzCore.framework
-(UIImage*)captureView:(UIView *)theView
CGRect rect = theView.
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
4.储存图片
储存图片这里分成储存到app的文件里和储存到手机的图片库里
1)&储存到app的文件里
NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@&Documents&]stringByAppendingPathComponent:@&image.png&];
[UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];
把要处理的图片, 以image.png名称存到app home下的Documents目录里
2)储存到手机的图片库里(必须在真机使用,模拟器无法使用)
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
UIGetScreenImage(); // 原来是private(私有)api, 用来截取整个画面,不过SDK 4.0后apple就开放了
//====================================================================================
以下代码用到了Quartz Framework 和 Core Graphics Framework. 在workspace的framework目录里添加这两个framework.在UIKit里,图像类UIImage和CGImageRef的画图操作都是通过Graphics Context来完成。Graphics Context封装了变换的参数,使得在不同的坐标系里操作图像非常方便。缺点就是,获取图像的数据不是那么方便。下面会给出获取数据区的代码。
1. 从UIView中获取图像相当于窗口截屏。
(ios提供全局的全屏截屏函数UIGetScreenView(). 如果需要特定区域的图像,可以crop一下)
CGImageRef screen = UIGetScreenImage();
UIImage* image = [UIImage imageWithCGImage:screen];
2. 对于特定UIView的截屏。
(可以把当前View的layer,输出到一个ImageContext中,然后利用这个ImageContext得到UIImage)
-(UIImage*)captureView: (UIView *)theView
CGRect rect = theView.
UIGraphicsBeginImageContext(rect.size);
CGContextRef context =UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
3. 如果需要裁剪指定区域。
(可以path & clip,以下例子是建一个200x200的图像上下文,再截取出左上角)
UIGraphicsBeginImageContext(CGMakeSize(200,200));
CGContextRefcontext=UIGraphicsGetCurrentContext();
UIGraphicsPushContext(context);
// ...把图写到context中,省略[indent]CGContextBeginPath();
CGContextAddRect(CGMakeRect(0,0,100,100));
CGContextClosePath();[/indent]CGContextDrawPath();
CGContextFlush();
// 强制执行上面定义的操作
UIImage* image = UIGraphicGetImageFromCurrentImageContext();
UIGraphicsPopContext();
4. 存储图像。
(分别存储到home目录文件和图片库文件。)
存储到目录文件是这样
NSString *path = [[NSHomeDirectory() stringByAppendingPathComponent:@&Documents&] stringByAppendingPathComponent:@&image.png&];
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
若要存储到图片库里面
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
5. &互相转换UImage和CGImage。
(UImage封装了CGImage, 互相转换很容易)
UIImage* imUI=
CGImageRef imCG=
imUI = [UIImage initWithCGImage:imCG];
imCG = imUI.CGI
6. 从CGImage上获取图像数据区。
(在apple dev上有QA, 不过好像还不支持ios)
下面给出一个在ios上反色的例子
-(id)invertContrast:(UIImage*)img
CGImageRef inImage = img.CGI&
CGContextR
CFDataRef m_DataR
m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage));&
int width = CGImageGetWidth( inImage );
int height = CGImageGetHeight( inImage );
int bpc = CGImageGetBitsPerComponent(inImage);
int bpp = CGImageGetBitsPerPixel(inImage);
int bpl = CGImageGetBytesPerRow(inImage);
UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef);
int length = CFDataGetLength(m_DataRef);
NSLog(@&len %d&, length);
NSLog(@&width=%d, height=%d&, width, height);NSLog(@&1=%d, 2=%d, 3=%d&, bpc, bpp,bpl);
for (int index = 0; index & index &#43;= 4){&m_PixelBuf[index &#43; 0] = 255 - m_PixelBuf[index &#43; 0];// bm_PixelBuf[index &#43; 1] = 255 - m_PixelBuf[index &#43; 1];// gm_PixelBuf[index &#43; 2] = 255 - m_PixelBuf[index &#43; 2];// r}
ctx = CGBitmapContextCreate(m_PixelBuf, width, height, bpb, bpl, CGImageGetColorSpace( inImage ), kCGImageAlphaPremultipliedFirst
);CGImageRef imageRef = CGBitmapContextCreateImage (ctx);UIImage* rawImage = [UIImage imageWithCGImage:imageRef];CGContextRelease(ctx);return rawI}
7.&显示图像数据区。
(显示图像数据区,也就是unsigned char*转为graphics context或者UIImage或和CGImageRef)
CGContextRef ctx = CGBitmapContextCreate(pixelBuf,width,height, bitsPerComponent,bypesPerLine, colorSpace,kCGImageAlphaPremultipliedLast );
CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
UIImage* image = [UIImage imageWithCGImage:imageRef];
NSString* path = [[NSHomeDirectory() stringByAppendingPathComponent:@&Documents&] stringByAppendingPathComponent:@&ss.png&];
[UIImagePNGRepresentation(self.image) writeToFile:path atomically:YES];
CGContextRelease(ctx);
得到图像数据区后就可以很方便的实现图像处理的算法。
完,欢迎指正!
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:141560次
积分:1586
积分:1586
排名:第12730名
原创:28篇
(4)(1)(2)(2)(4)(2)(9)(1)(1)(1)(1)(8)(1)推荐这篇日记的豆列
······如何让UIImageView加载的图片会自动拉伸填满这个ImageView,并且修改view的大小,image也会跟着变?
[问题点数:40分,结帖人lanyu1986]
如何让UIImageView加载的图片会自动拉伸填满这个ImageView,并且修改view的大小,image也会跟着变?
[问题点数:40分,结帖人lanyu1986]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2015年4月 移动开发大版内专家分月排行榜第二
2015年3月 移动开发大版内专家分月排行榜第三2014年10月 移动开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 uiimage 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信