图片压缩

更新时间:2015/12/03 访问次数:12774

ios图片压缩

下面的例子是一个ios图片压缩的简单示例函数。可以压缩图片的分辨率和质量

在工程里新建category:UIImage+Compress, 拷贝以下代码到对应的文件。

UIImage+Compress.h文件


#import <Foundation/Foundation.h> @interface UIImage (Compress) /** * @description 按分辨率和质量压缩图片 * @param newSize 压缩到的分辨率 * @param quality 压缩到的质量 * @return image data */ - (NSData *)dataByCompressToSize:(CGSize)size toQuality:(CGFloat)quality; /** * @description 按分辨率和质量压缩图片 * @param newSize 压缩到的分辨率 * @param quality 压缩到的质量 * @return image */ - (UIImage *)imageByCompressToSize:(CGSize)size toQuality:(CGFloat)quality; /** * @description 按分辨率比例和质量压缩图片 * @param scale 压缩到的分辨率比例 * @param quality 压缩到的质量 */ - (NSData *)dataByCompressToScale:(CGFloat)scale toQuality:(CGFloat)quality; /** * @description 按分辨率比例和质量压缩图片 * @param scale 压缩到的分辨率比例 * @param quality 压缩到的质量 */ - (UIImage *)imageByCompressToScale:(CGFloat)scale toQuality:(CGFloat)quality; @end

UIImage+Compress.m文件


#import "UIImage+Compress.h" #import <ImageIO/ImageIO.h> @implementation UIImage (Compress) - (NSData *)dataByCompressToSize:(CGSize)size toQuality:(CGFloat)quality { UIImage *compressedImage = self; if (!CGSizeEqualToSize(size, CGSizeZero)) { UIGraphicsBeginImageContext(size); [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; compressedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } if (quality == 1) { return UIImagePNGRepresentation(compressedImage); } else { return UIImageJPEGRepresentation(compressedImage, quality); } } - (UIImage *)imageByCompressToSize:(CGSize)size toQuality:(CGFloat)quality { UIImage *compressedImage = self; if (!CGSizeEqualToSize(size, CGSizeZero)) { UIGraphicsBeginImageContext(size); [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; compressedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } if (quality == 1) { return compressedImage; } else { return [UIImage imageWithData:UIImageJPEGRepresentation(compressedImage, quality)]; } } - (NSData *)dataByCompressToScale:(CGFloat)scale toQuality:(CGFloat)quality { return [self dataByCompressToSize:CGSizeMake(self.size.width * scale, self.size.height * scale) toQuality:quality]; } - (UIImage *)imageByCompressToScale:(CGFloat)scale toQuality:(CGFloat)quality { return [self imageByCompressToSize:CGSizeMake(self.size.width * scale, self.size.height * scale) toQuality:quality]; } @end

Android图片压缩

首先需要引入**BitmapUtils**类。

import com.alibaba.sdk.android.media.utils.BitmapUtils

1 压缩指定路径的文件

通过指定文件的路径filePath,设置压缩分辨率width和height,并指定压缩的质量quality,完成文件压缩。如下所示:

byte[] BitmapUtils.getSmallBitmapBytes(String filePath, int width, int height, int quality)

2 byte[]压缩到Bitmap

设置压缩分辨率width和height,将图片数据byte[]压缩到Bitmap。

Bitmap BitmapUtils.createBitmap(byte[] data, int maxWidh, int maxHeight)

3 Bitmap转换到byte[]

将Bitmap对象转换成byte[]。

byte[] BitmapUtils.toBytes(Bitmap bm)

4 Bitmap压缩到Bitmap

设置压缩的质量quality,将Bitmap压缩到Bitmap。

Bitmap BitmapUtils.compressBitmap(Bitmap bitmap, int compress)

FAQ

关于此文档暂时还没有FAQ
返回
顶部