Objective c 如何用颜色填充imageview(未被图像覆盖)中的空白?
我想创建一个固定大小的图像,例如612 x 612。我正在使用图像选择器从iphone中选择照片。因此,为了确保所有照片都符合612 x 612的大小而不失真,我使用以下方法重新缩放照片,使其符合612 x 612的大小。但是,结果可能会在最终图像中创建空白。(见下面的示例) 我正在使用以下代码缩放我的图像(固定大小为612乘612) 如前所述,由于图像有时不是一个完整的正方形,我得到的结果如下所示:Objective c 如何用颜色填充imageview(未被图像覆盖)中的空白?,objective-c,ios,uiimageview,uiimage,Objective C,Ios,Uiimageview,Uiimage,我想创建一个固定大小的图像,例如612 x 612。我正在使用图像选择器从iphone中选择照片。因此,为了确保所有照片都符合612 x 612的大小而不失真,我使用以下方法重新缩放照片,使其符合612 x 612的大小。但是,结果可能会在最终图像中创建空白。(见下面的示例) 我正在使用以下代码缩放我的图像(固定大小为612乘612) 如前所述,由于图像有时不是一个完整的正方形,我得到的结果如下所示: 如何用黑色来感觉图像中的空白?将UIImageView上的背景色设置为黑色,您将得到所需的将
如何用黑色来感觉图像中的空白?将
UIImageView
上的背景色设置为黑色,您将得到所需的将UIImageView
上的背景色设置为黑色,您将得到所需的一种方法是将UIImageView的背景色设置为黑色blackColor
另一种方法是在缩放图像时用黑色填充矩形
- (UIImage *)scaleImage:(UIImage *)img toRectSize:(CGRect)screenRect {
...
CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);
// Fill the original rect with black color
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextFillRect(context, screenRect);
[img drawInRect:newRect blendMode:kCGBlendModeNormal alpha:1];
...
}
请注意,drawInRect:blendMode:alpha:方法中的blendMode
设置为kCGBlendModeNormal
。如果设置一些其他混合模式,则会得到不需要的结果。例如,如果将混合模式设置为kCGBlendModePlusDarker,并用blackColor填充矩形,则整个图像将变为黑色。一种方法是将UIImageView的背景色设置为blackColor
另一种方法是在缩放图像时用黑色填充矩形
- (UIImage *)scaleImage:(UIImage *)img toRectSize:(CGRect)screenRect {
...
CGRect newRect = CGRectMake(leftOffset, topOffset, newWidth, newHeight);
// Fill the original rect with black color
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);
CGContextFillRect(context, screenRect);
[img drawInRect:newRect blendMode:kCGBlendModeNormal alpha:1];
...
}
请注意,drawInRect:blendMode:alpha:方法中的blendMode
设置为kCGBlendModeNormal
。如果设置一些其他混合模式,则会得到不需要的结果。例如,如果将混合模式设置为kCGBlendModePlusDarker,并用黑色填充矩形,则整个图像将变为黑色。谢谢!这是否意味着我必须删除这一行[img drawInRect:newRect blendMode:kcblendmodeplusdarker alpha:1];并用“ModeNormal”替换它?顺便说一句,这工作的伟大!非常感谢!对如果你想要真实图像不受干扰,你必须使用kCGBlendModeNormal。谢谢!这是否意味着我必须删除这一行[img drawInRect:newRect blendMode:kcblendmodeplusdarker alpha:1];并用“ModeNormal”替换它?顺便说一句,这工作的伟大!非常感谢!对如果希望实际图像不受干扰,则必须使用kCGBlendModeNormal。