我確定已經從各種不同的角度提出了很多次,但我在這裏還找不到答案。允許用戶在UIImage上繪製矩形,並打算裁剪圖像
我想實現 我想這樣做是爲了顯示一個UIImage,並允許用戶在圖像上繪製一個矩形,並最終裁剪他們的選擇是什麼。
研究至今 我已經在這裏找到前面的問題上,這樣處理裁剪,但是他們經常處理靜態種植區不會改變,這也導致這種機制
以下限制- 您感興趣的圖片區域可能位於任何地方 ,例如,如果您嘗試裁剪道路標誌,它可能會集中在一個圖像上,但會左對齊,因此您 無法預測要裁剪哪個區域。
- 的大小和感興趣的區域可能會改變的規模,例如 一個圖像可能是一個特寫的是路標,因此種植面積 將更大,但另一個圖像可能已經從 距離意味着採取作物面積會更小。
通過上述兩個變量的組合,它幾乎是不可能準確預測,其中的圖像中的關注區域會是這樣,所以我依靠用戶通過能「畫」來定義這個一個圍繞我們感興趣的區域的盒子,在這種情況下是一個路標。
這是Android上的所有桃色的,因爲你可以委派所有的辛勤工作,用一個漂亮的意圖,如:
Intent intent = new Intent("com.android.camera.action.CROP");
但是,我找不到iOS的等價物。
我發現這段代碼從這個source:
- (UIImage *)imageByDrawingCircleOnImage:(UIImage *)image
{
// begin a graphics context of sufficient size
UIGraphicsBeginImageContext(image.size);
// draw original image into the context
[image drawAtPoint:CGPointZero];
// get the context for CoreGraphics
CGContextRef ctx = UIGraphicsGetCurrentContext();
// set stroking color and draw circle
[[UIColor redColor] setStroke];
// make circle rect 5 px from border
CGRect circleRect = CGRectMake(0, 0,
image.size.width,
image.size.height);
circleRect = CGRectInset(circleRect, 5, 5);
// draw circle
CGContextStrokeEllipseInRect(ctx, circleRect);
// make image out of bitmap context
UIImage *retImage = UIGraphicsGetImageFromCurrentImageContext();
// free the context
UIGraphicsEndImageContext();
return retImage;
}
我相信這是裁剪一個很好的起點(但它確實麥田圈),它依賴於預先定義你想要的區域撥打CGRectMake
時需要裁剪。
這previous question也詳細說明如何做實際的裁剪。
我假設允許用戶繪製矩形,我需要與手勢集成?
問題: 我該如何允許用戶在圖像視圖中繪製矩形,以修剪該區域?
我想這將是更容易去vith額外的UIView作爲你的UIImageView的子視圖添加 - 或簡單地在它的頂部。用戶將調整此UIView的大小,並準備裁剪時只使用其尺寸。 –