其实图片裁剪功能已经很常见了,代码也是五彩缤纷的有,在这说下小生遇到的一个小问题。
目前在维护的项目一套代码同时用在了手机和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);
要不然你会蛋疼的发现,哥我截的是胸,你丫给我看肚子干毛线!