Vielen Dank für Ihre Ideen.
fand ich das eine vom Linuxios der nützlichste Gimp layer modes
require "json"
require "httpclient"
require "chunky_png"
module ChunkyPNG::Color
def h(value)
r,g,b = r(value).to_f/MAX, g(value).to_f/MAX, b(value).to_f/MAX
min, max = [r,g,b].minmax
return 0 if max == min
result = case max
when r then (g - b)/(max - min) + (g < b ? 6 : 0)
when g then (b - r)/(max - min) + 2
when b then (r - g)/(max - min) + 4
end
result * 60
end
def s(value)
min, max = [r(value), g(value), b(value)].minmax.map { |value| value.to_f/MAX }
max == 0 ? 0 : (max - min)/max
end
def v(value)
[r(value), g(value), b(value)].max.to_f/MAX
end
def hsv(h, s, v)
h = h.to_f/360
i = (h * 6).floor
f = h * 6 - i
p = v * (1 - s)
q = v * (1 - f * s)
t = v * (1 - (1 - f) * s)
case i % 6
when 0 then r, g, b = v, t, p
when 1 then r, g, b = q, v, p
when 2 then r, g, b = p, v, t
when 3 then r, g, b = p, q, v
when 4 then r, g, b = t, p, v
when 5 then r, g, b = v, p, q
end
rgb *[r,g,b].map {|value| (value * 255).round }
end
end
module CoderWall
module_function
def badges(username)
url = URI.escape("https://coderwall.com/#{username}.json")
response = HTTPClient.get(url)
json = JSON.parse(response.body)
urls = json['badges'].map {|b| b['badge']}
brown = ChunkyPNG::Color.from_hex("#bf8a30")
hue = ChunkyPNG::Color.h(brown)
saturation = ChunkyPNG::Color.s(brown)
value = ChunkyPNG::Color.v(brown)
urls.each do |url|
matches = url.match /(\w+)\-/
response = HTTPClient.get(url)
filename = "./tmp/coderwall/"+matches[1]+".png"
File.open(filename,"w") {|f| f.write(response.body)}
image = ChunkyPNG::Image.from_file(filename)
image.pixels.map! do |pixel|
v = ChunkyPNG::Color.v(pixel)
unless ChunkyPNG::Color.a(pixel) > 0
v = value
end
ChunkyPNG::Color.hsv(hue,saturation, v)
end
image.save(filename.gsub(/\.png/,"_brown.png"), :fast_rgba)
end
end
end
badges = CoderWall.badges("astropanic")
Der obige Code besteht aus einigen Schnipseln rund um das Internet gefunden. Hier
ist das Ergebnis: Stop doing new year resolutions. Make the change now !
Verwandte: http://stackoverflow.com/questions/11973086/duplicate-photoshops-color-blend-mode-in-imagemagick –
Nun, zunächst herauszufinden, welche Art von Pixel Mathe, das GIMP für den Modus "Farbe" macht, macht dann diese Art von Pixelmathematik mit einer der Bildbibliotheken. – Linuxios
Wenn ich Sie wäre, würde ich zuerst das Bild entsättigen und dann jedes Pixel von Grau auf seine "entsprechende" braune Farbe über eine Skalierungsfunktion skalieren. – maerics