图片裁剪

其实图片裁剪功能已经很常见了,代码也是五彩缤纷的有,在这说下小生遇到的一个小问题。
目前在维护的项目一套代码同时用在了手机和pad上,播放器在横屏时,在ipad上上下会留有黑边(ipad是4:3的宽高比),所以在横屏截屏展示时就会截下黑边。

//剪裁图片
 - (UIImage *)clipToFitSize:(UIImage *)src
{
    float width = CGImageGetWidth(src.CGImage);
    float height = CGImageGetHeight(src.CGImage);
    float fitWidth,fitHeight;
    CGPoint origin;
    if (width / height > 16 /9.0 + 0.05){
        fitWidth = height * 16 / 9.0;
        fitHeight = height;
        origin = CGPointMake((width - fitWidth) / 2, 0);
    }else {
        fitWidth = width;
        fitHeight = (width * 9 / 16);
        origin = CGPointMake(0, (height - fitHeight) / 2);
    }
    CGRect rect = CGRectMake(origin.x, origin.y, fitWidth, fitHeight);
    UIImage * newImage = [UIImage imageWithCGImage:CGImageCreateWithImageInRect(src.CGImage, rect)];
    return newImage;
}

这段代码需要注意的是,因为用CGImage方法,所以rect也要用CGImage的width和height,就是这哥儿俩:

CGImageGetWidth(src.CGImage);
CGImageGetHeight(src.CGImage);

要不然你会蛋疼的发现,哥我截的是胸,你丫给我看肚子干毛线!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值