图像压缩成指定大小(高度/宽度)
2014-12-11 15:39
253 查看
复制代码 #import @interface UIImage (UIImageExt) - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize; @end |
复制代码 #import "UIImageExt.h" @implementation UIImage (UIImageExt) - (UIImage*)imageByScalingAndCroppingForSize:(CGSize)targetSize { UIImage *sourceImage = self; UIImage *newImage = nil; CGSize imageSize = sourceImage.size; CGFloat width = imageSize.width; CGFloat height = imageSize.height; CGFloat targetWidth = targetSize.width; CGFloat targetHeight = targetSize.height; CGFloat scaleFactor = 0.0; CGFloat scaledWidth = targetWidth; CGFloat scaledHeight = targetHeight; CGPoint thumbnailPoint = CGPointMake(0.0,0.0); if (CGSizeEqualToSize(imageSize, targetSize) == NO) { CGFloat widthFactor = targetWidth / width; CGFloat heightFactor = targetHeight / height; if (widthFactor > heightFactor) scaleFactor = widthFactor; // scale to fit height else scaleFactor = heightFactor; // scale to fit width scaledWidth = width * scaleFactor; scaledHeight = height * scaleFactor; // center the image if (widthFactor > heightFactor) { thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5; } else if (widthFactor < heightFactor) { thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5; } } UIGraphicsBeginImageContext(targetSize); // this will crop CGRect thumbnailRect = CGRectZero; thumbnailRect.origin = thumbnailPoint; thumbnailRect.size.width = scaledWidth; thumbnailRect.size.height = scaledHeight; [sourceImage drawInRect:thumbnailRect]; newImage = UIGraphicsGetImageFromCurrentImageContext(); if(newImage == nil) NSLog(@"could not scale image"); //pop the context to get back to the default UIGraphicsEndImageContext(); return newImage; } @end 1、创建UIImage的类别,添加图像压缩指定大小方法 imageByScalingAndCroppingForSize:(CGSize)targetSize; 此方法传入一个压缩图像大小以后的高度和宽度。(第一部分代码) 2、实现UIImageExt类别,初始化图像缩放默认值。(9-19) 3、然后检查是否需要进行图像缩放。(21) 4、如果需要缩放,则计算先分别计算高度、宽度的因子。(23-24) 5、选择因子系数最大的一边作为图像的缩放因子。(26-29) 6、根据前面得到的图像缩放因子得到缩放图像的等比例高度和宽度值。(30-31) 7、由于是按照最大系数一边进行缩放,造成其中另外一边会出现空白,所以需要计算出另外一边居中显示的坐标值。(34-42) 8、最后根据最新合成的Origin和Size在画布完成内容绘制。(45-52) 9、保存为UIImage对象。(54-56) 10、关闭画图,返回UIImage对象。(59-60) |
相关文章推荐
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- 每日分享 - 图像压缩成指定大小(高度/宽度)
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- 一个关于图片压缩的java类,大小变小,宽度高度不变
- android开发游记:图像文件压缩方法总结(将图像压缩到指定大小)
- 图像压缩成指定大小(高度/宽度)
- 网站改版,以前给客户做的flash大小不合适怎么办?那我告诉你让flash根据你指定的宽度自动调整高度
- 一个可以使得上传的图片大小按照指定的宽度,高度自动按比例进行缩放的函数(C#)
- 算法--把图像压缩成指定大小的代码
- 把图像压缩成指定大小的代码
- Atitit nodejs js 获取图像分辨率 尺寸 大小 宽度 高度
- html中image标签如果不指定宽度高度
- c# 获取图像 宽度 高度 位深度
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度
- 获取浏览器的高度,宽度,并监测浏览器的宽口大小变化
- Android 自定义imageview 图片高度固定大小宽度按比例自适应
- JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度