获取透明图像的BoundingBox?

时间:2010-03-23 15:43:06

标签: iphone c objective-c

我将一个透明的.png加载到UIImage中。

如何计算真实的边界框。例如。如果真实图像小于.png维度。

感谢您的帮助

2 个答案:

答案 0 :(得分:8)

假设“图像的边界框”只是图像中的一个矩形,以像素坐标指定。

你想要image的矩形,其中包含alpha大于threshold的所有像素(相当于所有不在此矩形中的像素的alpha值低于{{1} }})。之后,您可以在屏幕坐标(或任何您想要的任何内容)中转换此矩形。

基本算法是从包含整个图像的矩形开始,然后水平缩小矩形,然后垂直缩小(或垂直然后水平缩放)。

我不知道Objective-C,所以我把代码放在纯C中(有些函数只是为了让代码更清晰):

threshold

现在您已经在图像中以像素为单位的边界框的坐标,您应该能够在设备坐标中对其进行变换。

答案 1 :(得分:0)

CGRect myImageViewRect = [myImageView frame];
CGSize myImageSize = [[myImageView image]size];

if(myImageSize.width < myImageViewRect.size.width){
   NSLog(@"it's width smaller!");
}
if(myImageSize.height < myImageViewRect.size.height){
   NSLog(@"it's height smaller!");
}

如果您希望图像调整为图像视图的大小,可以调用

[myImageView sizeToFit];