Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何用颜色填充imageview(未被图像覆盖)中的空白?_Objective C_Ios_Uiimageview_Uiimage - Fatal编程技术网

Objective c 如何用颜色填充imageview(未被图像覆盖)中的空白?

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上的背景色设置为黑色,您将得到所需的将

我想创建一个固定大小的图像,例如612 x 612。我正在使用图像选择器从iphone中选择照片。因此,为了确保所有照片都符合612 x 612的大小而不失真,我使用以下方法重新缩放照片,使其符合612 x 612的大小。但是,结果可能会在最终图像中创建空白。(见下面的示例)

我正在使用以下代码缩放我的图像(固定大小为612乘612)

如前所述,由于图像有时不是一个完整的正方形,我得到的结果如下所示:


如何用黑色来感觉图像中的空白?

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。