回答
为了得到艾因图像的帧是因为这很容易:
CGRect myFrame = myUIImageView.frame;
这是你问什么?
UIImage *img=[UIImage imageNamed:@"yourimagename.png(any)"];
你可以利用它来设置帧的图像帧,
CGRect imageFrame=CGRectMake(x,y,img.size.width,img.size.height);
注:
img.size.width给你你的形象和IMG的宽度.size.height为您提供图像的高度
感谢您的回答... – Injar 2012-03-07 09:47:22
您可以检查像素(0,0)处的颜色。这将是框架的颜色。然后 你会下降1px和1px,直到你得到不同的颜色 - 这就是你如何找到 框架厚度。
像这样:
self.yourImage = [UIImage imageNamed:@"painting-with-border.png"];
NSLog(@"original size: %@", NSStringFromCGSize(self.yourImage.size));
BOOL success = NO;
CGFloat x_frame = 1.0;
CGFloat y_frame = 1.0;
CGFloat x_max = self.yourImage.size.width/2.0;
CGFloat y_max = self.yourImage.size.height/2.0;
UIColor *frameColor = [self.yourImage colorAtPixel: CGPointMake (1.0,1.0)];
NSString *hexFrameColor = [frameColor hexStringFromColor];
NSLog (@"frame color: %@", hexFrameColor);
UIColor *testPixelColor;
NSString *hexTestPixelColor;
while ((!success) && (x_frame < x_max) && (y_frame < y_max)) {
x_frame = x_frame + 1.0;
y_frame = y_frame + 1.0;
testPixelColor = [self.yourImage colorAtPixel: CGPointMake (x_frame,y_frame)];
hexTestPixelColor = [testPixelColor hexStringFromColor];
NSLog(@"color at pixel (%.0f,%.0f): %@", x_frame,y_frame,hexTestPixelColor);
if (![hexFrameColor isEqualToString: hexTestPixelColor]) {
success = YES;
NSLog (@"found frame border at (%.0f,%.0f)", x_frame,y_frame);
}
}
CGRect newFrame;
if (success) {
newFrame = CGRectMake(x_frame,y_frame,self.yourImage.size.width-x_frame,self.yourImage.size.height-y_frame);
NSLog(@"To crop image inside frame use: %@", NSStringFromCGRect(newFrame));
} else {
NSLog (@"couldn't define frame width");
}
此方法将检查图像为它的帧画面的中间。
注:
ColorAtPixel
不是UIKit
的一部分。你可以在Ole Begemann的OBShapedButton中找到它。
hexStringFromColor
不是UIKit
的一部分。这是一个类别,你可以在uicolor-utilities找到。
对于剪裁UIImage
然后你可以在这里找到很多方法,但这不是你的问题的一部分。
此代码用图像进行测试:
输出是:
原始大小:{314,451}
帧颜色:980C0C
在像素颜色(2,2):980C0C
c的olor在像素(3,3):980C0C
颜色在像素(4,4):980C0C
颜色在像素(5,5):在像素980C0C
颜色(6,6) :414429
在(6,6)
帧使用内部发现帧边界要裁剪图像:{{6,6},{308,445}}
注:此米只有当边界完全用相同的颜色制成时,方法才能起作用。 (压缩).jpg
图像中的某些边界可能具有边界,其中颜色略有变化。为此,您应该使用一种检查颜色相似性的算法 - 但这完全是另一个话题。
此代码是为在所有边上具有相同厚度的图像写入的。我相信你可以修改上/下框架的厚度与左/右厚度不同的情况。
- 1. 获取具体的联系信息
- 2. 获取.Net字体信息?
- 3. 从SQL错误消息获取具体信息547
- 4. 如何获取所有用户的具体信息?
- 5. 从Linq的其他表中获取具体信息
- 6. 从Android的网站获取具体信息
- 7. 从WPF的FormattedText获取字体信息
- 8. 如何从UIImage或Cocoa中的图片获取日期信息?
- 9. Java获取工具提示信息
- 10. 获取信息
- 11. 获取信息
- 12. OS X PDF:获取字体信息
- 13. 从Raphael物体获取信息
- 14. 获取CPU信息
- 15. 获取baseexception信息
- 16. C#获取信息
- 17. 获取块信息
- 18. 获取Exif信息
- 19. 获取Json信息
- 20. 获取表信息
- 21. 获取DBA_USERS信息
- 22. 信息提取工具包
- 23. 只显示具体的json信息
- 24. “应用程序的具体信息” crashreports
- 25. 阅读文件中的具体信息
- 26. 查找字符串的具体信息
- 27. jQuery的获取类信息
- 28. JavaEE的获取信息
- 29. 获取控件的信息
- 30. 获取的信息生成
不要这样想:他问的是同一个UIColor的矩形 - 我猜他想要减去图像上可见帧的粗细(不是图层的边框)。 – 2012-03-07 09:29:52