- 浏览: 545435 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
landerson:
明显就有要求的嘛
ANDROID轻量级JSON序列化和反序列化[转] -
jimode2013:
很不错,就是需要这个方法
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转] -
w11h22j33:
...
[转]NSMutableArray中的自动释放对象让我郁闷了一整天 -
w11h22j33:
UILabel* label = [[UILabel a ...
Iphone开发 -
w11h22j33:
http://mobile.51cto.com/iphone- ...
获得通讯录中联系人的所有属性[转]
http://mobile.51cto.com/iphone-284346.htm
iPhone开发应用UIImage图片对象操作是本文要介绍的内容,主要来学习UIImage图片对象操作,内容不多,主要是以代码实现图片对象的操作。
1、根据给定得图片,从其指定区域截取一张新得图片。
- -(UIImage *)getImageFromImage{
- //大图bigImage
- //定义myImageRect,截图的区域
- CGRect myImageRect = CGRectMake(10.0, 10.0, 57.0, 57.0);
- UIImage* bigImage= [UIImage imageNamed:@"k00030.jpg"];
- CGImageRef imageRef = bigImage.CGImage;
- CGImageRef subImageRef = CGImageCreateWithImageInRect(imageRef, myImageRect);
- CGSize size;
- size.width = 57.0;
- size.height = 57.0;
- UIGraphicsBeginImageContext(size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextDrawImage(context, myImageRect, subImageRef);
- UIImage* smallImage = [UIImage imageWithCGImage:subImageRef];
- UIGraphicsEndImageContext();
- return smallImage;
- }
2、针对UIImage得一些常用缩放得方法:
- -(UIImage*)resizedImage1:(UIImage*)inImage inRect:(CGRect)thumbRect {
- // Creates a bitmap-based graphics context and makes it the current context.
- UIGraphicsBeginImageContext(thumbRect.size);
- [inImage drawInRect:thumbRect];
- return UIGraphicsGetImageFromCurrentImageContext();
- }
- -(UIImage*)resizedImage2:(UIImage*)inImage inRect:(CGRect)thumbRect {
- CGImageRef imageRef = [inImage CGImage];
- CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageRef);
- /* There's a wierdness with kCGImageAlphaNone and CGBitmapContextCreate
- see Supported Pixel Formats in the Quartz 2D Programming Guide
- Creating a Bitmap Graphics Context section
- only RGB 8 bit images with alpha of kCGImageAlphaNoneSkipFirst,
- kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst,and kCGImageAlphaPremultipliedLast,
- with a few other oddball image kinds are supported
- The images on input here are likely to be png or jpeg files*/
- if (alphaInfo == kCGImageAlphaNone)
- alphaInfo = kCGImageAlphaNoneSkipLast;
- // Build a bitmap context that's the size of the thumbRect
- CGFloat bytesPerRow;
- if( thumbRect.size.width > thumbRect.size.height ) {
- bytesPerRow = 4 * thumbRect.size.width;
- } else {
- bytesPerRow = 4 * thumbRect.size.height;
- }
- CGContextRef bitmap = CGBitmapContextCreate(NULL,
- thumbRect.size.width, // width
- thumbRect.size.height, // height
- 8, //CGImageGetBitsPerComponent(imageRef), // really needs to always be 8
- bytesPerRow, //4 * thumbRect.size.width, // rowbytes
- CGImageGetColorSpace(imageRef),
- alphaInfo
- );
- // Draw into the context, this scales the image
- CGContextDrawImage(bitmap, thumbRect, imageRef);
- // Get an image from the context and a UIImage
- CGImageRef ref = CGBitmapContextCreateImage(bitmap);
- UIImage* result = [UIImage imageWithCGImage:ref];
- CGContextRelease(bitmap); // ok if NULL
- CGImageRelease(ref);
- return result;
- }
- - (UIImage *)scaleImage:(UIImage *) image maxWidth:(float) maxWidth maxHeight:(float) maxHeight
- {
- CGImageRef imgRef = image.CGImage;
- CGFloat width = CGImageGetWidth(imgRef);
- CGFloat height = CGImageGetHeight(imgRef);
- if (width <= maxWidth && height <= maxHeight)
- {
- return image;
- }
- CGAffineTransform transform = CGAffineTransformIdentity;
- CGRect bounds = CGRectMake(0, 0, width, height);
- if (width > maxWidth || height > maxHeight)
- {
- CGFloat ratio = width/height;
- if (ratio > 1)
- {
- bounds.size.width = maxWidth;
- boundsbounds.size.height = bounds.size.width / ratio;
- }
- else
- {
- bounds.size.height = maxHeight;
- boundsbounds.size.width = bounds.size.height * ratio;
- }
- }
- CGFloat scaleRatio = bounds.size.width / width;
- UIGraphicsBeginImageContext(bounds.size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextScaleCTM(context, scaleRatio, -scaleRatio);
- CGContextTranslateCTM(context, 0, -height);
- CGContextConcatCTM(context, transform);
- CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
- UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return imageCopy;
- }
3、其他缩放UIImage的size,有需要的可以看看
- -(UIImage*) scaleAndRotateImage:(UIImage*)photoimage:(CGFloat)bounds_width:(CGFloat)bounds_height
- {
- //int kMaxResolution = 300;
- CGImageRef imgRef =photoimage.CGImage;
- CGFloat width = CGImageGetWidth(imgRef);
- CGFloat height = CGImageGetHeight(imgRef);
- CGAffineTransform transform = CGAffineTransformIdentity;
- CGRect bounds = CGRectMake(0, 0, width, height);
- /*if (width > kMaxResolution || height > kMaxResolution)
- {
- CGFloat ratio = width/height;
- if (ratio > 1)
- {
- bounds.size.width = kMaxResolution;
- boundsbounds.size.height = bounds.size.width / ratio;
- }
- else
- {
- bounds.size.height = kMaxResolution;
- boundsbounds.size.width = bounds.size.height * ratio;
- }
- }*/
- bounds.size.width = bounds_width;
- bounds.size.height = bounds_height;
- CGFloat scaleRatio = bounds.size.width / width;
- CGFloat scaleRatioheight = bounds.size.height / height;
- CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));
- CGFloat boundHeight;
- UIImageOrientation orient =photoimage.imageOrientation;
- switch(orient)
- {
- case UIImageOrientationUp: //EXIF = 1
- transform = CGAffineTransformIdentity;
- break;
- case UIImageOrientationUpMirrored: //EXIF = 2
- transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);
- transform = CGAffineTransformScale(transform, -1.0, 1.0);
- break;
- case UIImageOrientationDown: //EXIF = 3
- transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);
- transform = CGAffineTransformRotate(transform, M_PI);
- break;
- case UIImageOrientationDownMirrored: //EXIF = 4
- transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);
- transform = CGAffineTransformScale(transform, 1.0, -1.0);
- break;
- case UIImageOrientationLeftMirrored: //EXIF = 5
- boundHeight = bounds.size.height;
- boundsbounds.size.height = bounds.size.width;
- bounds.size.width = boundHeight;
- transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);
- transform = CGAffineTransformScale(transform, -1.0, 1.0);
- transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
- break;
- case UIImageOrientationLeft: //EXIF = 6
- boundHeight = bounds.size.height;
- boundsbounds.size.height = bounds.size.width;
- bounds.size.width = boundHeight;
- transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);
- transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);
- break;
- case UIImageOrientationRightMirrored: //EXIF = 7
- boundHeight = bounds.size.height;
- boundsbounds.size.height = bounds.size.width;
- bounds.size.width = boundHeight;
- transform = CGAffineTransformMakeScale(-1.0, 1.0);
- transform = CGAffineTransformRotate(transform, M_PI / 2.0);
- break;
- case UIImageOrientationRight: //EXIF = 8
- boundHeight = bounds.size.height;
- boundsbounds.size.height = bounds.size.width;
- bounds.size.width = boundHeight;
- transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);
- transform = CGAffineTransformRotate(transform, M_PI / 2.0);
- break;
- default:
- [NSException raise:NSInternalInconsistencyException format:@"Invalid?image?orientation"];
- break;
- }
- UIGraphicsBeginImageContext(bounds.size);
- CGContextRef context = UIGraphicsGetCurrentContext();
- if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft)
- {
- CGContextScaleCTM(context, -scaleRatio, scaleRatioheight);
- CGContextTranslateCTM(context, -height, 0);
- }
- else
- {
- CGContextScaleCTM(context, scaleRatio, -scaleRatioheight);
- CGContextTranslateCTM(context, 0, -height);
- }
- CGContextConcatCTM(context, transform);
- CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);
- UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();
- UIGraphicsEndImageContext();
- return imageCopy;
- }
发表评论
-
iOS App性能优化
2014-01-03 11:23 1727http://www.hrchen.com/2013/05/ ... -
iOS多线程编程Part 3/3 - GCD
2014-01-03 11:21 1676http://www.hrchen.com/2013/07/ ... -
iOS多线程编程Part 2/3 - NSOperation
2014-01-03 11:20 4577http://www.hrchen.com/2013/06/ ... -
iOS多线程编程Part 1/3 - NSThread & Run Loop
2014-01-03 11:17 7151http://www.hrchen.com/2013/06/ ... -
iOS移动网络环境调优那些事[转]
2014-01-02 17:10 2944http://xiangwangfeng.com/201 ... -
生成APNS Service证书的步骤[转]
2013-05-23 09:19 5711要进行推送服务的第一件事就是获取推送证书。它用来对你通过SS ... -
xcode 环境,多工程联编设置【转】
2013-02-28 21:59 9225http://blog.csdn.net/vienna_zj ... -
干掉你程序中的僵尸代码【转】
2012-12-22 11:05 994随着万圣节越来越流行,我感觉有必要跟大家讨论一下一个 ... -
一个文本框搞定信用卡相关信息的输入[转]
2012-12-22 11:03 1168http://beforweb.com/node/134 ... -
【转】深度技术分析“为什么ios比android流畅”
2012-09-23 19:41 1450原文 Andorid更新了一个版本又一个版本,硬 ... -
Iphone开发
2012-09-17 22:46 12301. NSClassFromString 这个方法 ... -
HowTo: Install iPhone SDK 2.0 – 3.1 for XCode 3.2[转]
2012-09-06 09:00 1243原文链接 So… you’ve installe ... -
Xcode 中设置部分文件ARC支持[转]
2012-08-03 10:57 1751ARC是什么 ARC是iOS 5推出的新功 ... -
xcode4 设置调试错误信息小结【转】
2012-07-19 14:37 1831方案1:NSZombieEnabled 先选中工程, ... -
Finding iPhone Memory Leaks: A “Leaks” Tool Tutorial【转】
2012-07-19 14:36 1285Finding iPhone Memory Lea ... -
[Cocoa]XCode的一些调试技巧【转】
2012-07-19 14:35 1228XCode 内置GDB,我们可以在命令行中使用 GDB ... -
[IPhone]如何使用Leak检查内存泄漏[转]
2012-07-19 14:34 1271简介 在IPhone程式开发中,记忆体泄漏(内存泄漏)是 ... -
获得通讯录中联系人的所有属性[转]
2012-06-21 14:04 1642获得通讯录中联系人的所有属性 ,看代码: ABAdd ... -
多个UIViewController使用addSubView,第二个 UIViewController 不响应旋转[转]
2012-06-20 23:51 16457------------------------------- ... -
shouldAutorotateToInterfaceOrientation 不触发或者不执行的问题[转]
2012-06-20 22:58 1478今天遇到一个很郁闷 ...
相关推荐
在iPhone应用中,由于屏幕尺寸和性能考虑,经常需要对UIImage对象进行尺寸调整,以确保图片在不同设备上正确显示和高效加载。下面将详细介绍标题和描述中提及的"UIImage resize"知识点,以及如何通过自定义类别来...
本示例"iphone ImageView转灰色图片demo"就是展示了如何实现这一功能。 首先,我们需要了解UIImageView和UIImage。UIImageView是iOS SDK中用于显示图像的UI组件,它可以显示一张图片或者作为背景。UIImage对象则...
首先,通过NSData的`+dataWithContentsOfFile:`方法读取PNG文件,然后用UIImage的`+imageWithData:`方法创建UIImage对象。接着,可以使用`CGImageSourceCreateWithData`和`CGImageDestinationCreateWithData`等Core ...
总之,这个项目提供了一种方法来将iPhone的PNG图片转换为适合iOS应用的标准格式,同时可能还包含了一些代码优化和自定义绘图的技术。通过研究源码,开发者可以学习到iOS图形处理和图片操作的技巧,提高自己的iOS开发...
5. **UIImage对象**:UIImage是iOS中表示图像的数据结构,它包含了图片的信息,如像素数据、格式等。获取到UIImage后,可以进行保存、分享或显示在界面上。 6. **保存截图**:如果需要将截图保存到设备上,可以使用...
在`UIImage-Extensions.h`中,通常会定义一些方法声明,例如: ```objc @interface UIImage (Rotation) - (UIImage *)imageRotatedByDegrees:(CGFloat)degrees; @end ``` 这里声明了一个名为`...
在iOS中,图片通常以UIImage对象的形式存在,而拉伸图片主要是调整其内容以适应不同的大小,同时保持关键区域不失真。这通常涉及到两个重要的概念:内容模式(Content Mode)和拉伸区域(Stretchable Region)。 1....
当你需要改变图片的尺寸时,可以使用`UIImage`类中的方法来实现。如代码所示,`scaleToSize:`方法是一个自定义的方法,它创建一个新的`UIGraphicsImageRendererContext`,然后在指定的矩形区域内绘制原始图片,最后...
若希望在应用启动时自动显示之前保存的图片,可以使用`NSData`的`writeToFile:atomically:`方法将图片数据写入文件,然后在应用启动时使用`initWithContentsOfFile:`方法从文件中读取并创建`UIImage`对象。...
首先通过`UIImage`的`imageNamed:`方法加载图片,然后利用`CGImage`的相关方法提取图片的指定区域,最后将截取后的`CGImageRef`转换回`UIImage`对象。 ### 3. 检测是否为Retina屏幕 Retina屏幕是指具有高像素密度...
UIImage对象可以与CGImage相互转换,方便进行图像处理。 9. **Notification与KVO(Key-Value Observing)**:为了实现界面间的通信,项目可能使用NSNotification或KVO来监听特定事件或对象属性的变化,从而实时更新...
本资源“(0140)-iOS/iPhone/iPad/iPod源代码-其他(Others)-QR Code Encoder”提供了一个实用的解决方案,它是一个能够将NSString对象转换为UIImage对象的QR码生成器。这个工具使用了开源库libqrencode来实现...
在iPhone上,可以使用UIImage对象来存储和处理图像,但进行复杂的图像处理时,通常需要将其转换为CIImage对象,以便与Core Image框架更好地交互。处理完成后,再将CIImage转换回UIImage显示在屏幕上。 6. 性能优化 ...
在iOS和iPhone开发中,Base64转码尤其重要,因为它可以将图片转换为字符串格式,方便在网络请求中作为参数传递,或者存储在数据库中。 一、Base64编码原理 Base64编码的原理是将每3个字节(24位)的数据转换为4个...
- 使用`UIImage`类:在iOS开发中,`UIImage`是处理图片的主要对象,可以加载、显示和处理图片。 - 屏幕适配:通过`@2x`、`@3x`等后缀标识不同分辨率的图片,系统会自动选择合适的资源。 - 动态加载:对于大图或...
首先,你需要导入库,然后在需要显示图片的UIImageView对象上调用`sd_setImageWithURL:`方法,传入图片的URL。库内部会自动处理下载、解码和缓存的过程。例如: ```swift import SDWebImage imageView.sd_setImage...
可以使用`NSURLSession`或者`NSData`来下载图片数据,并用`UIImage`的初始化方法创建图片对象。 5. **图片放大效果**: 为了实现放大效果,我们可以使用`UIImageView`或自定义视图来显示图片。通常会配合手势识别器...
首先,我们要明白在iOS中处理图片预览主要涉及的组件有UIImageView和UIPopoverPresentationController(对于iPad)或UINavigationController(对于iPhone)。当用户点击UIImageView时,我们通常会弹出一个新的...
在PrinterDemoDev开源项目中,开发者很可能会找到如何将UIImage对象转换为打印机可以理解的数据流的方法。 接下来,我们来看看PrinterDemoDev项目。该项目通常会包含以下关键部分: 1. CBCentralManager的实现:...
传入UIImage对象,系统会处理保存过程,并提供一个完成回调,告知用户操作是否成功。 8. **权限管理**:自iOS 11开始,如果应用程序需要访问用户的照片库,需要在Info.plist文件中添加相应的权限声明,并在代码中...