关于UIImage的一些拓展

本文介绍了一种使用Objective-C语言通过视图截图的方法来生成高效缩略图,适用于不同屏幕分辨率的场景。通过调整屏幕缩放比例,确保截图质量不受影响。此外,提供了一个自定义方法来调整截图大小,满足不同应用需求。

#import <Foundation/Foundation.h>


@interface UIImage (MyImage)

+ (UIImage*)imageFromView:(UIView*)view;

+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize;

+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize;

@end


使用如下方法可以方便的对已加载的view截图,主要用于缩略图的显示。


#import "MyImage.h"


@implementation UIImage (MyImage)


+ (void)beginImageContextWithSize:(CGSize)size

{

    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {

        if ([[UIScreen mainScreen] scale] == 2.0) {

            UIGraphicsBeginImageContextWithOptions(size, NO, 2.0);

        } else {

            UIGraphicsBeginImageContext(size);

        }

    } else {

        UIGraphicsBeginImageContext(size);

    }

}


+ (void)endImageContext

{

    UIGraphicsEndImageContext();

}


+ (UIImage*)imageFromView:(UIView*)view

{

    [self beginImageContextWithSize:[view bounds].size];

    BOOL hidden = [view isHidden];

    [view setHidden:NO];

    [[view layer] renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    [self endImageContext];

    [view setHidden:hidden];

    return image;

}


+ (UIImage*)imageFromView:(UIView*)view scaledToSize:(CGSize)newSize

{

    UIImage *image = [self imageFromView:view];

    if ([view bounds].size.width != newSize.width ||

        [view bounds].size.height != newSize.height) {

        image = [self imageWithImage:image scaledToSize:newSize];

    }

    return image;

}


+ (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize

{

    [self beginImageContextWithSize:newSize];

    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];

    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

    [self endImageContext];

    return newImage;

}

@end




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值