簡體   English   中英

從CIImage繪制UIImage在drawRect中:

[英]Draw UIImage From CIImage In drawRect:

我正在學習使用CIFilters等繪制UIImages和CGImages的知識。為了測試我的知識,我制作了一個帶有滑塊的小型測試應用程序,該滑塊可通過編程方式更改葯水精靈的顏色並將其顯示在屏幕上(使用CIHueBlendMode CIFilter)。 完成后,我想清理相對冗長的代碼,並注意到,可以使用UIImage的imageWithCIImage:方法直接從CIImage轉換為UIImage,而不是從過濾器的輸出CIImage移至CGImage,然后是UIImage。

但是,當我嘗試使用drawInRect:繪制所得的UIImage時,沒有繪制任何內容。 當然,通過CGImage階段可以解決此問題。 我對此的理解是, 從CIImage制作UIImage會導致UIImage中的NULL CGImage屬性,該屬性用於drawInRect:中 這個對嗎? 如果是這樣,是否有比通過CGImage和UIImage更好的顯示CIImage的方法? 我可以只繪制一個用CIImage制作的CGImage,但是那樣會使圖像翻轉,從而引發另一個問題。 目前,我先將繪制的所有圖像包裝在UIImage中,以進行翻轉。 還有另一種更有效的方法嗎?

太長; 沒看過:除了將CIImages轉換為CGImage,然后將UIImage並進行繪制之外,還有更好的方法來繪制CIImages嗎? 繪制CGImage時處理翻轉的最佳方法是什么?

感謝任何可以回答我一些問題的人。 :)

在研究了CIImage是什么之后,我現在意識到您不能跳過從CIImage制作CGImage的步驟,即使可以,它實際上也不會更加有效,因為您仍然必須無論如何處理CIImage。 正如Apple文檔中所述 ,CIImage並不是真正的圖像,當它變成CGImage時會被處理。 這就是為什么如果在項目上使用Time Profiler的原因,我發現我在drawRect:方法中有99%的時間都花在createCGImage:上,而不是使用CIFilters。

至於處理Core Graphics和iPhone之間的坐標系更改的最有效方法,看來將對象包裝在UIImage實例中是最簡單(不確定最好)的方法。 這很簡單,而且相對有效。 另一個選擇是轉換圖形上下文。


如果三天內沒有收到比我自己的答案更好的答案,我會將其標記為已接受。

暫無
暫無

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

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