图片的处理-改尺寸、显圆形、判断图片类型
2016-10-12 10:35
232 查看
//1.改变图像的尺寸,方便上传服务器
- (UIImage ) scaleFromImage: (UIImage ) image toSize: (CGSize) size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
//2.保持原来的长宽比,生成一个缩略图
- (UIImage )thumbnailWithImageWithoutScale:(UIImage )image size:(CGSize)asize
{
UIImage *newimage;
if (nil == image) {
newimage = nil;
}
else{
CGSize oldsize = image.size;
CGRect rect;
if (asize.width/asize.height > oldsize.width/oldsize.height) {
rect.size.width = asize.height*oldsize.width/oldsize.height;
rect.size.height = asize.height;
rect.origin.x = (asize.width - rect.size.width)/2;
rect.origin.y = 0;
}
else{
rect.size.width = asize.width;
rect.size.height = asize.width*oldsize.height/oldsize.width;
rect.origin.x = 0;
rect.origin.y = (asize.height - rect.size.height)/2;
}
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newimage;
}
3.显示圆形头像
[imgeView.layer setCornerRadius:CGRectGetHeight([self.img bounds]) / 2]; //修改半径,实现头像的圆形化
imgeView.layer.masksToBounds = YES;
4判断是否为PNG图片
png/jpg图片十六进制表示形式的前8位不同,可作为区分的标志;png图片前8位包含137 80 78 71 13 10 26 10(UIImagePNGRepresentation和UIImageJPEGRepresentation用来转成png或jpg格式 )
static unsigned char kPNGSignatureBytes[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
static NSData *kPNGSignatureData = nil;
BOOL ImageDataHasPNGPreffix(NSData *data);
BOOL ImageDataHasPNGPreffix(NSData *data) {
NSUInteger pngSignatureLength = [kPNGSignatureData length];
if ([data length] >= pngSignatureLength) {
if ([[data subdataWithRange:NSMakeRange(0, pngSignatureLength)] isEqualToData:kPNGSignatureData]) {
return YES;
}
}
}
kPNGSignatureData = [NSData dataWithBytes:kPNGSignatureBytes length:8];
- (UIImage ) scaleFromImage: (UIImage ) image toSize: (CGSize) size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
//2.保持原来的长宽比,生成一个缩略图
- (UIImage )thumbnailWithImageWithoutScale:(UIImage )image size:(CGSize)asize
{
UIImage *newimage;
if (nil == image) {
newimage = nil;
}
else{
CGSize oldsize = image.size;
CGRect rect;
if (asize.width/asize.height > oldsize.width/oldsize.height) {
rect.size.width = asize.height*oldsize.width/oldsize.height;
rect.size.height = asize.height;
rect.origin.x = (asize.width - rect.size.width)/2;
rect.origin.y = 0;
}
else{
rect.size.width = asize.width;
rect.size.height = asize.width*oldsize.height/oldsize.width;
rect.origin.x = 0;
rect.origin.y = (asize.height - rect.size.height)/2;
}
UIGraphicsBeginImageContext(asize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor clearColor] CGColor]);
UIRectFill(CGRectMake(0, 0, asize.width, asize.height));//clear background
[image drawInRect:rect];
newimage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
return newimage;
}
3.显示圆形头像
[imgeView.layer setCornerRadius:CGRectGetHeight([self.img bounds]) / 2]; //修改半径,实现头像的圆形化
imgeView.layer.masksToBounds = YES;
4判断是否为PNG图片
png/jpg图片十六进制表示形式的前8位不同,可作为区分的标志;png图片前8位包含137 80 78 71 13 10 26 10(UIImagePNGRepresentation和UIImageJPEGRepresentation用来转成png或jpg格式 )
static unsigned char kPNGSignatureBytes[8] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
static NSData *kPNGSignatureData = nil;
BOOL ImageDataHasPNGPreffix(NSData *data);
BOOL ImageDataHasPNGPreffix(NSData *data) {
NSUInteger pngSignatureLength = [kPNGSignatureData length];
if ([data length] >= pngSignatureLength) {
if ([[data subdataWithRange:NSMakeRange(0, pngSignatureLength)] isEqualToData:kPNGSignatureData]) {
return YES;
}
}
return NO;
}
kPNGSignatureData = [NSData dataWithBytes:kPNGSignatureBytes length:8];
相关文章推荐
- JS 判断 图片上传_限制格式、类型、尺寸
- IOS学习笔记 - NSFileManager,沙盒路径,NSString类路径处理,NSCache,读取文件头判断图片类型
- JS 判断 图片上传_限制格式、类型、尺寸
- 用HTML的File控件上传图片,用JS判断和限制图片格式、类型、尺寸
- asp.net(C#)上传单个图片并判断图片的类型和大小(源代码)
- 【Android代码片段之一】图片处理Bitmap相关类型转换
- javascript图片上传类型及大小判断
- 判断datalist中图片尺寸
- android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下
- asp.net(C#)上传单个图片并判断图片的类型和大小(源代码)vs2008
- js判断上传图片大小及尺寸
- asp.net(C#)上传单个图片并判断图片的类型和大小
- Html input(file)实现图片的上传 判断图片的大小和类型
- 判断图片类型
- ASP.NET上传图片,服务器端验证,宽度,高度,文件类型,尺寸,文件大小,图片上传,图片格式检查
- 判断图片的类型
- php判断上传的文件是否是图片类型
- ASP.NET上传图片,服务器端验证,宽度,高度,文件类型,尺寸,文件大小,图片上传,图片格式检查
- 读文件头判断图片类型!
- 【转载】js判断上传图片大小及尺寸