iOS 指定压缩大小(UIImage扩张)--Swift/OC版
2016-08-13 10:19
239 查看
UIImageExtension.swift
OC版
// // UIImageExtension.swift // GongFuBaoSwift // // Created by GongHui_YJ on 16/8/12. // Copyright © 2016年 杨建. All rights reserved. // // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| |// `. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. / // ___`. .' /--.--\ `. . __ // ."" '< `.___\_<|>_/___.' >'"". // | | : `- \`.;`\ _ /`;.`/ - ` : | | // \ \ `-. \_ __\ /__ _/ .-` / / // ======`-.____`-.___\_____/___.-`____.-'====== // `=---=' // // ............................................. // 佛祖保佑 永无BUG // 佛曰: // 写字楼里写字间,写字间里程序员; // 程序人员写程序,又拿程序换酒钱。 // 酒醒只在网上坐,酒醉还来网下眠; // 酒醉酒醒日复日,网上网下年复年。 // 但愿老死电脑间,不愿鞠躬老板前; // 奔驰宝马贵者趣,公交自行程序员。 // 别人笑我忒疯癫,我笑自己命太贱; // 不见满街漂亮妹,哪个归得程序员? import Foundation extension UIImage { ///对指定图片进行拉伸 func resizableImage(name: String) -> UIImage { var normal = UIImage(named: name)! let imageWidth = normal.size.width * 0.5 let imageHeight = normal.size.height * 0.5 normal = resizableImageWithCapInsets(UIEdgeInsetsMake(imageHeight, imageWidth, imageHeight, imageWidth)) return normal } /** * 压缩上传图片到指定字节 * * image 压缩的图片 * maxLength 压缩后最大字节大小 * * return 压缩后图片的二进制 */ class func compressImage(image: UIImage, maxLength: Int) -> NSData? { let newSize = self.scaleImage(image, imageLength: 300) let newImage = self.resizeImage(image, newSize: newSize) var compress:CGFloat = 0.9 var data = UIImageJPEGRepresentation(newImage, compress) while data?.length > maxLength && compress > 0.01 { compress -= 0.02 data = UIImageJPEGRepresentation(newImage, compress) } return data } /** * 通过指定图片最长边,获得等比例的图片size * * image 原始图片 * imageLength 图片允许的最长宽度(高度) * * return 获得等比例的size */ class func scaleImage(image: UIImage, imageLength: CGFloat) -> CGSize { var newWidth:CGFloat = 0.0 var newHeight:CGFloat = 0.0 let width = image.size.width let height = image.size.height if (width > imageLength || height > imageLength){ if (width > height) { newWidth = imageLength; newHeight = newWidth * height / width; }else if(height > width){ newHeight = imageLength; newWidth = newHeight * width / height; }else{ newWidth = imageLength; newHeight = imageLength; } } return CGSize(width: newWidth, height: newHeight) } /** * 获得指定size的图片 * * image 原始图片 * newSize 指定的size * * return 调整后的图片 */ class func resizeImage(image: UIImage, newSize: CGSize) -> UIImage { UIGraphicsBeginImageContext(newSize) image.drawInRect(CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } }
OC版
/** * 图片压缩 */ - (NSData *)resetSizeOfImageData:(UIImage *)source_image maxSize:(NSInteger)maxSize { //先调整分辨率 CGSize newSize = CGSizeMake(source_image.size.width, source_image.size.height); CGFloat tempHeight = newSize.height / 1024; CGFloat tempWidth = newSize.width / 1024; if (tempWidth > 1.0 && tempWidth > tempHeight) { newSize = CGSizeMake(source_image.size.width / tempWidth, source_image.size.height / tempWidth); } else if (tempHeight > 1.0 && tempWidth < tempHeight){ newSize = CGSizeMake(source_image.size.width / tempHeight, source_image.size.height / tempHeight); } UIGraphicsBeginImageContext(newSize); [source_image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //调整大小 NSData *imageData = UIImageJPEGRepresentation(newImage,1.0); NSUInteger sizeOrigin = [imageData length]; NSUInteger sizeOriginKB = sizeOrigin / 1024; if (sizeOriginKB > maxSize) { NSData *finallImageData = UIImageJPEGRepresentation(newImage,0.50); return finallImageData; } return imageData; }
相关文章推荐
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- iOS开发>学无止境 - 截取UIImage指定大小区域
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- ios-->截图、生成指定大小图片以及压缩
- IOS中将照片压缩至指定大小
- iOS开发之image图片压缩及压缩成指定大小的两种方法
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- IOS开发基础之——图像压缩成指定大小(高度/宽度)
- iOS 图片按比例压缩,指定大小压缩
- iOS开发技巧之:图片压缩成指定的大小
- iOS图片压缩成指定大小
- IOS 压缩图片到指定大小kb
- iOS中图片压缩成指定的大小
- iOS图片压缩成指定大小
- ios-->截图、生成指定大小图片以及压缩
- ios uiimage图片缩放到指定大小尺寸
- ios 获取指定路径文件大小
- iphone 压缩图片到指定的大小
- UIImage截图 截取指定大小图片
- iOS 图片压缩UIImage方法扩展