フレームの太さが不明なため、UIImageをUIImageに合わせる必要があります(これもUIImageです)。画像が添付されています。UIImageの特定の矩形を取得する
UIImageで同じUIColorの矩形をどのように検出できますか? AIN画像のフレームを取得するための
フレームの太さが不明なため、UIImageをUIImageに合わせる必要があります(これもUIImageです)。画像が添付されています。UIImageの特定の矩形を取得する
UIImageで同じUIColorの矩形をどのように検出できますか? AIN画像のフレームを取得するための
は、このように簡単です:
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
をチェックできますピクセル(0,0)の色はです。これはフレームの色になります。次に あなたは異なる色になるまで1ピクセル下がり、1ピクセル左に行くでしょう。つまり、フレームの厚みは です。
ので、同じように:
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 980C0C
ピクセルの色(4,4):980C0C
ピクセルの色(5,5)ピクセルで980C0C
色(6,6)olor画素(3,3)で:414429
フレーム用内部クロップ画像に(6,6)
で見出さフレーム境界:{{6,6}、{308、445}}
注:このM境界が正確に同じ色から作られている場合にのみ、エソートが機能します。 .jpg
の(圧縮された)一部の枠線は、色がわずかに変わる罫線を持つことがあります。そのためには、色の類似性をチェックするアルゴリズムを使用する必要がありますが、それはまったく別のトピックです。
また、このコードは、すべての面に同じ厚さのフレームがある画像用に書かれています。上下のフレームの厚さが左右の厚さと異なる場合にコードを修正できることは間違いありません。
彼は同じUIColorの矩形について質問しています - 私は、レイヤーのフレームではなく、イメージ上の可視フレームの太さを差し引いたいと思います。 –