- 浏览: 86963 次
- 性别:
- 来自: 成都
最新评论
// 压缩图片,如果图片大于100kb,就循环压缩
+ (NSData *)compressionWithImage:(UIImage *)image{
// 先按宽度压缩
UIImage *newImage = [image resizeImageGreaterThan:480];
NSData *data;
float quality = 1.0f;
if (UIImageJPEGRepresentation(newImage, quality)) {
data = UIImageJPEGRepresentation(newImage, quality);
while (data.length / 1024.0f > 100 && quality > 0.5) {
quality -= 0.1f;
data = UIImageJPEGRepresentation(newImage, quality);
}
}
if (data == nil) {
data = UIImageJPEGRepresentation(newImage, 0.5);
}
return data;
}
----mark
// 这里是UIImage的一个扩展,按宽度压缩
#import "UIImage+Resize.h"
@implementation UIImage (Resize)
- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL {
UIImage * res;
UIImage * img = self;
res = img;
float height = img.size.height;
float width = img.size.width;
float bigger = height > width ? height : width;
float coefficient = 1.0;
int maxPix = maxL;
if (bigger > maxPix) {
coefficient = maxPix / bigger;
res = [img resizeImageWithNewSize:CGSizeMake(width * coefficient, height * coefficient)];
}
return res;
}
- (UIImage*)resizeImageWithNewSize:(CGSize)newSize
{
CGFloat newWidth = newSize.width;
CGFloat newHeight = newSize.height;
// Resize image if needed.
float width = self.size.width;
float height = self.size.height;
// fail safe
if (width == 0 || height == 0)
return self;
//float scale;
if (width != newWidth || height != newHeight) {
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
[self drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
UIImage *resized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//NSData *jpeg = UIImageJPEGRepresentation(image, 0.8);
return resized;
}
return self;
}
@end
#import <UIKit/UIKit.h>
@interface UIImage (Resize)
/*
* brife 缩放图片
* maxL 图片的高度
*/
- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL;
@end
+ (NSData *)compressionWithImage:(UIImage *)image{
// 先按宽度压缩
UIImage *newImage = [image resizeImageGreaterThan:480];
NSData *data;
float quality = 1.0f;
if (UIImageJPEGRepresentation(newImage, quality)) {
data = UIImageJPEGRepresentation(newImage, quality);
while (data.length / 1024.0f > 100 && quality > 0.5) {
quality -= 0.1f;
data = UIImageJPEGRepresentation(newImage, quality);
}
}
if (data == nil) {
data = UIImageJPEGRepresentation(newImage, 0.5);
}
return data;
}
----mark
// 这里是UIImage的一个扩展,按宽度压缩
#import "UIImage+Resize.h"
@implementation UIImage (Resize)
- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL {
UIImage * res;
UIImage * img = self;
res = img;
float height = img.size.height;
float width = img.size.width;
float bigger = height > width ? height : width;
float coefficient = 1.0;
int maxPix = maxL;
if (bigger > maxPix) {
coefficient = maxPix / bigger;
res = [img resizeImageWithNewSize:CGSizeMake(width * coefficient, height * coefficient)];
}
return res;
}
- (UIImage*)resizeImageWithNewSize:(CGSize)newSize
{
CGFloat newWidth = newSize.width;
CGFloat newHeight = newSize.height;
// Resize image if needed.
float width = self.size.width;
float height = self.size.height;
// fail safe
if (width == 0 || height == 0)
return self;
//float scale;
if (width != newWidth || height != newHeight) {
UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight));
[self drawInRect:CGRectMake(0, 0, newWidth, newHeight)];
UIImage *resized = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//NSData *jpeg = UIImageJPEGRepresentation(image, 0.8);
return resized;
}
return self;
}
@end
#import <UIKit/UIKit.h>
@interface UIImage (Resize)
/*
* brife 缩放图片
* maxL 图片的高度
*/
- (UIImage*)resizeImageGreaterThan:(CGFloat)maxL;
@end
发表评论
-
block语法
2015-12-11 10:34 536How Do I Declare A Block in Obj ... -
禁止WebView长按事件
2015-11-04 16:05 1182在webViewDidFinishLoad调用: - (voi ... -
一个公共的TableView,然后不会为每个TableView加delegate和datasource
2015-10-27 10:46 997.h // // PublicTableView.h // ... -
记录一些不错的文章
2015-10-09 20:04 613好久没有写ios了,这篇文章主要是记录一些看到的不错的文章: ... -
封装录音View
2015-06-26 16:13 617使用方法: 直接把XHRecrodView添加到control ... -
AFNetWorking请求WebService
2015-06-15 17:22 823.h #import <Foundation/Foun ... -
weakSelf
2015-05-11 14:44 558快速的定义一个weakSelf 当然是用于block里面啦 ... -
UINavigationItem 位置问题
2015-05-06 14:09 1028解决ios7 UINavigationItem 位置偏移问题 ... -
ios Icon及启动图集合
2015-05-04 09:13 684做icon和启动图按这个尺寸来 -
把图片压缩到指定大小(kb)
2015-01-19 16:32 5085UIImage *image=[UIImage imageNa ... -
获取当前时间属于该月的第几周
2015-01-06 15:04 1114+(NSInteger) indexWeekOfDateInM ... -
iOS开发的一些奇巧淫技
2014-12-31 11:13 769iOS开发的一些奇巧淫技 http://www.coco ... -
iOS中使用block进行网络请求回调
2014-06-23 16:26 5536转自: http://www.tuicool.com/arti ... -
ios程序异常crash捕获与拦截
2014-06-06 22:09 589转:http://www.sharejs.com/codes/ ... -
设置TabBar选中与未选中图片
2014-04-29 18:07 716-(void)settingTabbarController{ ... -
自定义的NavigationBar,我觉得还不错
2014-04-28 18:03 595地址1:http://code.cocoachina.com ... -
UITableView点击展开cell
2014-04-25 15:14 103861.定义控制cell的两个变量 //最近打开的ind ... -
分享一个非常好的东西
2014-04-09 17:44 720http://makeappicon.com/ 传一个10 ... -
IOS 基于APNS消息推送原理与实现(JAVA后台)
2014-04-09 17:30 992转:http://cshbbrain.iteye.com/bl ... -
ios开发申请发布证书和发布应用到app store
2014-03-21 11:03 7821.http://www.360doc.com/content ...
相关推荐
while (baos.toByteArray().length / 1024 > 100) { // 循环判断压缩后图片是否超过100KB baos.reset(); image.compress(Bitmap.CompressFormat.JPEG, options, baos); options -= 10; // 每次减少10 } ...
总结来说,这些代码片段展示了如何在C#中压缩图片以减少存储占用,如何使用JavaScript实现图片轮播效果,以及如何使用JavaScript进行基本的数据验证。这些技术在实际的Web应用开发中非常常见,能帮助优化用户体验并...
同时,为了保证循环能够正确结束,循环条件应检查当前图像的大小是否大于10KB。 最后,打印出压缩后的图像大小,以便用户了解压缩效果。整个过程保证了等比例压缩,从而尽量保持图像的质量,同时满足了压缩后的文件...
while (baos.toByteArray().length / 1024 > 100) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩 baos.reset(); // 重置baos即清空baos bitmap.compress(Bitmap.CompressFormat.JPEG, 60, baos); // ...
// 循环判断如果压缩后图片是否大于100kb,大于继续压缩 while (baos.toByteArray().length / 1024 > 100) { // 重置baos baos.reset(); // 这里压缩options%,把压缩后的数据存放到baos中 image.compress...
请注意,如果这个命令导致压缩文件中所有文件 全部删除,这个空的压缩文件将被删除。 e 解压文件到当前目录。 f 更新压缩文件中的文件。 更新打包到压缩文件后被改变的文件。这个命令不 向压缩文件中添加新...
使用了压缩算法,设置了一个最大kb值,并每次循环压缩率递减10%。然而实际运行中发现,无论maxkb设置的多小,还是会出这个问题。仔细调试发现,原图大小为3M多,即使是最小10%的压缩率也过大了。于是将压缩率递减改...
- `if [ $s -gt 10 ]`: 如果文件大小大于10KB,则继续执行后续命令。 - `convert -quality 80 -resize 600x800 $each $each`: 调整图片大小并压缩质量。 - `composite -gravity southeast -dissolve 80 /水印目录...
- 此VB代码段使用For循环生成6个随机数,并检查奇数位置的数字是否大于其后的数字,如果是,则交换它们。 - 程序的具体执行过程需要对VB语句和逻辑操作有深入理解,无法仅凭给出的部分代码得出完整的运行结果。 ...
- **题目**: 由继承性可知,程序中子类拥有的成员数目一定大于等于父类拥有的成员数目。 - **正确答案**: 错误 - **解析**: 在面向对象编程中,子类继承父类的所有属性和方法(成员)。但是,子类可以选择不添加新的...
在这个过程中,如果检测到图片大小超过100MB,则给出警告,否则继续循环直到检测到有效的fileSize属性值,然后显示图片大小。 知识点四:文件上传表单的设计 在前端页面上,为了实现文件的上传功能,通常会使用HTML...
JPEG 是一种常用的图片压缩格式。 - B. TXT 是文本文件格式,不是图像格式。 - C. GIF 支持动画和透明度,是一种常见的图像格式。 - D. PNG 提供高质量的图像压缩和透明度支持,是一种常见的图像格式。 - **...
执行时可以不用输入扩展名,比如输入test如果当前路径下有一个test.g4b就会自动使用。 2013-10-17 1.修改代码支持新版HOTKEY。 2013-07-10 1.insmod现在支持长文件名(以前最多11个字符,现在没有限制). 2....