下面是构建图片缩略图的方法
1.先是构建一个图像
+ (UIImage *) imageFromView: (UIView *) theView
{
UIGraphicsBeginImageContext(theView.frame.size);
//创建一个基于位图的上下文(context),并将其设置为当前上下文。
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
//返回图形
UIGraphicsEndImageContext(); //方法是移除栈顶的基于当前位图的图形上下文。
return theImage;
}
2.使图像变小的方法
+ (CGSize) fitSize: (CGSize)thisSize inSize: (CGSize) aSize
{
CGFloat scale;
CGSize newsize = thisSize;
if (newsize.height && (newsize.height > aSize.height))
{
scale = aSize.height / newsize.height;
newsize.width *= scale;
newsize.height *= scale;
}
if (newsize.width && (newsize.width >= aSize.width))
{
scale = aSize.width / newsize.width;
newsize.width *= scale;
newsize.height *= scale;
}
return newsize;
}
+ (UIImage *) image: (UIImage *) image fitInSize: (CGSize) viewsize
{
// calculate the fitted size
CGSize size = [ImageHelper fitSize:image.size inSize:viewsize];
UIGraphicsBeginImageContext(viewsize);
float dwidth = (viewsize.width - size.width) / 2.0f ;
float dheight = (viewsize.height - size.height) / 2.0f ;
CGRect rect = CGRectMake(dwidth, dheight, size.width, size.height);
[image drawInRect:rect];
UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimg;
}
+ (UIImage *) image: (UIImage *) image fitInView: (UIView *) view
{
return [self image:image fitInSize:view.frame.size];
}
3.使图片从中间放大的方法
+ (UIImage *) image: (UIImage *) image centerInSize: (CGSize) viewsize
{
CGSize size = image.size;
UIGraphicsBeginImageContext(viewsize);
float dwidth = (viewsize.width - size.width) / 2.0f;
float dheight = (viewsize.height - size.height) / 2.0f;
CGRect rect = CGRectMake(dwidth, dheight, size.width, size.height);
[image drawInRect:rect];
UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimg;
}
+ (UIImage *) image: (UIImage *) image centerInView: (UIView *) view
{
return [self image:image centerInSize:view.frame.size];
}
4.使图片以充满屏幕的方式放大
+ (UIImage *) image: (UIImage *) image fillSize: (CGSize) viewsize
{
CGSize size = image.size;
CGFloat scalex = viewsize.width / size.width;
CGFloat scaley = viewsize.height / size.height;
CGFloat scale = MAX(scalex, scaley);
UIGraphicsBeginImageContext(viewsize);
CGFloat width = size.width * scale;
CGFloat height = size.height * scale;
float dwidth = ((viewsize.width - width) / 2.0f);
float dheight = ((viewsize.height - height) / 2.0f);
CGRect rect = CGRectMake(dwidth, dheight, size.width * scale, size.height * scale);
[image drawInRect:rect];
UIImage *newimg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newimg;
}
+ (UIImage *) image: (UIImage *) image fillView: (UIView *) view
{
return [self image:image fillSize:view.frame.size];
}
图片的放大有缩小其实就是用原图像的长和宽乘以想要缩小或放大的倍数