[英]Get pixel values of image and crop the black part of the image : Objective C
我可以獲取圖像的像素值並裁剪其黑色部分嗎? 例如,我有此圖像:
。
我想要這樣的東西
沒有黑色的部分。
關於如何執行此操作的任何可能的解決方案? 任何庫/代碼?
我正在使用ObjectiveC。
我已經看到了針對類似問題的解決方案 ,但我對此並不了解。 請詳細提供步驟。 謝謝。
可能最快的方法是遍歷圖像並找到非黑色的邊界像素。 然后將圖像重新繪制到新的上下文中,以裁剪邊框像素接收到的矩形。
邊界像素是指最左側,最頂部,最底部和最右側。 您可以找到一種從UIImage
獲取原始RGBA緩沖區的方法,然后可以通過該方法遍歷寬度和高度並在適當時設置邊框值。 例如,這意味着要獲取leftMostPixel
您首先將其設置為某個較大的值(或圖像寬度),然后在迭代中如果像素不是黑色,並且leftMostPixel > x
則leftMostPixel = x
。
現在您有了4個邊界值,您可以從中創建一個框架。 要僅重繪目標矩形,可以使用帶有上下文的各種工具,但是最簡單的方法可能是創建具有rect矩形大小的視圖,然后在其上放置具有原始圖像大小的圖像視圖,並創建該視圖的屏幕快照。 但是,圖像視圖的原點必須減去邊界矩形的原點(我們將其稍微偏離屏幕一點)。
但是,您可能會在圖像方向方面遇到一些問題。 如果圖像具有其他方向up
則原始數據將不遵守該方向。 因此,在創建有邊界的矩形時,您需要考慮到這一點。或者先重繪圖像以使其正確定向。或者甚至可以創建帶有RGBA數據的子緩沖區,並根據這些數據創建CGImage
並應用輸出UIImage
與輸入的方向相同。
因此,在達到界限之后,有很多過程。 有些速度較慢,有些會占用更多內存,有些則很難編寫代碼,並帶有邊緣情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.