/** * 从图片中按指定的位置大小截取图片的一部分 * * @param image UIImage image 原始的图片 * @param rect CGRect rect 要截取的区域 * * @return UIImage */ + (UIImage *)ct_imageFromImage:(UIImage *)image inRect:(CGRect)rect{ //把像 素rect 转化为 点rect(如无转化则按原图像素取部分图片) CGFloat scale = [UIScreen mainScreen].scale; CGFloat x= rect.origin.x*scale,y=rect.origin.y*scale,w=rect.size.width*scale,h=rect.size.height*scale; CGRect dianRect = CGRectMake(x, y, w, h); //截取部分图片并生成新图片 CGImageRef sourceImageRef = [image CGImage]; CGImageRef newImageRef = CGImageCreateWithImageInRect(sourceImageRef, dianRect); UIImage *newImage = [UIImage imageWithCGImage:newImageRef scale:[UIScreen mainScreen].scale orientation:UIImageOrientationUp]; return newImage; }
注:
ios可以自动识别@2x 和@3x的图片,以适应在不同屏幕上显示的图片大小一致,
这里截取的图片是按像素在原图上截取,原图大小和屏幕上显示的大小未必一致,
所以要进行相应的转化,缩放比就是[UIScreen mainScreen].scale,不同屏幕的scale是不同的
时间: 2024-10-06 18:15:09