簡體   English   中英

獲取圖像的像素值並裁剪圖像的黑色部分:目標C

[英]Get pixel values of image and crop the black part of the image : Objective C

我可以獲取圖像的像素值並裁剪其黑色部分嗎? 例如,我有此圖像:

圖片

我想要這樣的東西

圖片

沒有黑色的部分。

關於如何執行此操作的任何可能的解決方案? 任何庫/代碼?

我正在使用ObjectiveC。

我已經看到了針對類似問題的解決方案 ,但我對此並不了解。 請詳細提供步驟。 謝謝。

可能最快的方法是遍歷圖像並找到非黑色的邊界像素。 然后將圖像重新繪制到新的上下文中,以裁剪邊框像素接收到的矩形。

邊界像素是指最左側,最頂部,最底部和最右側。 您可以找到一種從UIImage獲取原始RGBA緩沖區的方法,然后可以通過該方法遍歷寬度和高度並在適當時設置邊框值。 例如,這意味着要獲取leftMostPixel您首先將其設置為某個較大的值(或圖像寬度),然后在迭代中如果像素不是黑色,並且leftMostPixel > xleftMostPixel = x

現在您有了4個邊界值,您可以從中創建一個框架。 要僅重繪目標矩形,可以使用帶有上下文的各種工具,但是最簡單的方法可能是創建具有rect矩形大小的視圖,然后在其上放置具有原始圖像大小的圖像視圖,並創建該視圖的屏幕快照。 但是,圖像視圖的原點必須減去邊界矩形的原點(我們將其稍微偏離屏幕一點)。

但是,您可能會在圖像方向方面遇到一些問題。 如果圖像具有其他方向up則原始數據將不遵守該方向。 因此,在創建有邊界的矩形時,您需要考慮到這一點。或者先重繪圖像以使其正確定向。或者甚至可以創建帶有RGBA數據的子緩沖區,並根據這些數據創建CGImage並應用輸出UIImage與輸入的方向相同。

因此,在達到界限之后,有很多過程。 有些速度較慢,有些會占用更多內存,有些則很難編寫代碼,並帶有邊緣情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM