2011-09-10 57 views
0

我正在嘗試着色圖像。但這次是一個更棘手的變種。特殊顏色混合模式以色調圖像

  • 圖像得到了saturationbrightnessalpha信息(可悲爲RGBA),這應該不被丟棄(飽和度爲黑色陰影)。

  • 着色顏色得到了huesaturationbrightnessalpha信息(可悲也爲RGBA),這也不應該被丟棄。按照我的想象,每個HSBA組件(除了色相)應該是乘以以完全控制着色圖像 - 例如,當我提供不太明亮的色調時,圖像亮度也應該縮小。

所以,像這樣:

(h,s,b,a) = (h_tint, s_tint*s_image, b_tint*b_image, a_tint*a_image) 

我在網上搜索,但這個過程似乎不被普通,忽略Alpha通道(甚至飽和過),即使對此時此刻。

我會在iOS需要它,但我甚至沒有在Photoshop中找到這種圖層混合模式。我試過(iOS中,如果在Photoshop中存在的):

  • Multiply - 不看都像什麼,我想
  • Darken - 不是真的
  • Color Dodge - 至少在某種程度上可以使用,但不真對
  • Plus Darker - 還行,但沒有真正
  • Color/Luminosity/Hue - 這將是我的最愛,但他們DIS卡色彩的飽和度和亮度值,而不是將它們相乘。但是,也許如果有一種方法可以在之後應用缺失的飽和度和亮度?

那麼,有描述的混合模式一個共同的名稱/它會有道理嗎?

有關如何在iOS中執行此操作的任何想法?(我知道蘋果開發者GuideReference和計算器的問題about tintingoverlaying)的

+0

好吧,我可能會選擇'Luminosity' /'Color',因爲它可以產生最少的努力並獲得可接受的結果。對於較暗的想要的顏色,結果仍然太亮。 – fabb

+0

順便說一下,我瞭解到亮度!=亮度(HSB)!=亮度(HSL) – fabb

回答

0

可以打造了由數據在你的控制支持,在已知格式的CGBitmapContextRef。然後,您可以將圖像繪製到該上下文中。現在,您可以獲取已知格式的圖像數據。你現在可以在像素上做任何你喜歡的數學運算。一旦你完成了像素的操作,你可以從CGContextRef創建一個CGImageRef。

數學取決於你。

+0

所以這種方法不常見? – fabb

+0

@fabb:我真的不知道,我對圖形編程沒有多少幫助。但是你指出你想要的不符合CoreGraphics提供的任何混合模式,所以你唯一真正的選擇是與像素數據混在一起。 –