Advertisement
Loadus

Inkscape - 35mm Film effect

Apr 3rd, 2011
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.19 KB | None | 0 0
  1. import coloreffect
  2. import math
  3.  
  4. class C(coloreffect.ColorEffect):
  5.   def colmod(self,r,g,b):
  6.     l = (max(r,g,b)+min(r,g,b))/2
  7.    
  8.     l = float(l) / 255
  9.     r = float(r) / 255
  10.     g = float(g) / 255
  11.     b = float(b) / 255
  12.  
  13.     RedCurve = float(6)
  14.     GreenCurve = float(2)
  15.     BlueCurve = float(1)
  16.  
  17.     r = (1 /(1 + math.exp(- RedCurve * (r - .5))) - (1 / (1 + math.exp(RedCurve / 2))))/(1 - 2 * (1 / (1 + math.exp(RedCurve / 2))))
  18.     g = (1 /(1 + math.exp(- GreenCurve * (g - .5))) - (1 / (1 + math.exp(GreenCurve / 2))))/(1 - 2 * (1 / (1 + math.exp(GreenCurve / 2))))
  19.     b = (1 /(1 + math.exp(- BlueCurve * (b - .5))) - (1 / (1 + math.exp(BlueCurve / 2))))/(1 - 2 * (1 / (1 + math.exp(BlueCurve / 2))))
  20.  
  21.     if l < 0.5:
  22.       r = (2 * l - 1) * (r - r * r) + r
  23.     else:
  24.       r = (2 * l - 1) * (math.sqrt(r) - r) + r
  25.  
  26.     if l < 0.5:
  27.       g = (2 * l - 1) * (g - g * g) + g
  28.     else:
  29.       g = (2 * l - 1) * (math.sqrt(g) - g) + g
  30.  
  31.     if l < 0.5:
  32.       b = (2 * l - 1) * (b - b * b) + b
  33.     else:
  34.       b = (2 * l - 1) * (math.sqrt(b) - b) + b
  35.  
  36.     r = int(r * 255)
  37.     g = int(g * 255)
  38.     b = int(b * 255)
  39.  
  40.     return '%02x%02x%02x' % (r,g,b)
  41.  
  42. c = C()
  43. c.affect()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement