我正在使用这段代码调整相机拍摄的图像大小。我将它按比例缩小为缩略图,但是接下来我想将它裁剪成60x60的正方形格式。我尝试了以下方法:
CGImageRef imageRef = CGImageCreateWithImageInRect(CGImage, rect);
但是我没有成功让它正常工作。如何使用核心图形来实现这个?
- (UIImage *) resizeCapturedImage:(UIImage *) img toWidth:(float) w{
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextRef ctx = CGBitmapContextCreate(NULL,w,w, 8, 0, colorspace,kCGImageAlphaPremultipliedFirst);
CGContextDrawImage(ctx, CGRectMake(0, 0, w,img.size.width*w/img.size.height), img.CGImage);
CGImageRef thumb = CGBitmapContextCreateImage(ctx);
UIImage *final = [UIImage imageWithCGImage:thumb scale:1.0 orientation:UIImageOrientationRight];
return final;
}
CGFloat
,而不是float
或者int
。 - Guy Kogusfloat
类型的3.5转换为int
时,结果可能是4(如果四舍五入),但更有可能将其截断为3。你希望尽可能保持一致使用数据类型,如果必须进行转换,则要明确地进行,并且有充分的理由。你介意我编辑你的答案以展示应该是什么吗? - Guy Kogusint
这样可以存储 +/-65535 值并将其转换为short
的变量,而short
只能存储 +/-32767 值,则会丢失高位值。 - Guy Kogusfloat
,而是CGFloat
;) - Guy Kogus