Changeset 1889 for www


Ignore:
Timestamp:
Nov 6, 2007, 12:09:01 AM (13 years ago)
Author:
Sam Hocevar
Message:
  • Changed our Image class to use float values between 0. and 1.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • www/study/study.py

    r1887 r1889  
    66    def getGray(self, x, y):
    77        c = self.getPixel((x, y))
    8         return self.colorComponents(c)[0]
     8        return self.colorComponents(c)[0] / 255.0
    99    def setGray(self, x, y, t):
    10         self.colorAllocate((t, t, t))
    11         c = self.colorExact((t, t, t))
     10        p = (int)(t * 255.999)
     11        self.colorAllocate((p, p, p))
     12        c = self.colorExact((p, p, p))
    1213        self.setPixel((x, y), c)
    1314
     
    2021for y in range(h):
    2122    for x in range(w):
    22         if src.getGray(x, y) >= 256 * 50 / 100:
    23             dest.setGray(x, y, 255)
    24         else:
    25             dest.setGray(x, y, 0)
     23        c = src.getGray(x, y) > 0.5
     24        dest.setGray(x, y, c)
    2625dest.writePng("test1.png")
    2726
     
    3029for y in range(h):
    3130    for x in range(w):
    32         if src.getGray(x, y) > 256 * 40 / 100:
    33             dest.setGray(x, y, 255)
    34         else:
    35             dest.setGray(x, y, 0)
     31        c = src.getGray(x, y) > 0.4
     32        dest.setGray(x, y, c)
    3633dest.writePng("test2.png")
    3734
     
    4037for y in range(h):
    4138    for x in range(w):
    42         if src.getGray(x, y) > 256 * 60 / 100:
    43             dest.setGray(x, y, 255)
    44         else:
    45             dest.setGray(x, y, 0)
     39        c = src.getGray(x, y) > 0.6
     40        dest.setGray(x, y, c)
    4641dest.writePng("test3.png")
    4742
     
    5146    d = 8 >> (x / 128)
    5247    for y in range(128):
    53         if (x / d + y / d) & 1:
    54             dest.setGray(x, y, 255)
    55         else:
    56             dest.setGray(x, y, 0)
     48        c = (x / d + y / d) & 1
     49        dest.setGray(x, y, c)
    5750dest.writePng("pattern50.png")
    5851
     
    6154for y in range(h):
    6255    for x in range(w):
    63         if src.getGray(x, y) >= 256 * 66 / 100:
    64             dest.setGray(x, y, 255)
    65         elif src.getGray(x, y) < 256 * 33 / 100:
    66             dest.setGray(x, y, 0)
    67         elif (x + y) & 1:
    68             dest.setGray(x, y, 255)
     56        c = src.getGray(x, y)
     57        if c < 0.333:
     58            c = 0.
     59        elif c < 0.666:
     60            c = (x + y) & 1
    6961        else:
    70             dest.setGray(x, y, 0)
     62            c = 1.
     63        dest.setGray(x, y, c)
    7164dest.writePng("test4.png")
    7265
     66# Create 25% and 75% halftone patterns with various block sizes
     67dest = image((512, 128))
     68for x in range(512):
     69    d = 8 >> (x / 128)
     70    for y in range(64):
     71        c = ((x / d + y / d) & 1) or (y / d & 1)
     72        dest.setGray(x, y, c)
     73    for y in range(64, 128):
     74        c = ((x / d + y / d) & 1) and (y / d & 1)
     75        dest.setGray(x, y, c)
     76dest.writePng("pattern25-75.png")
     77
     78# Test 4: 20/40/60/80% threshold with 25/50/75% halftone patterns inbetween:
     79dest = image((w, h))
     80for y in range(h):
     81    for x in range(w):
     82        c = src.getGray(x, y)
     83        if c < 0.2:
     84            c = 0.
     85        elif c < 0.4:
     86            c = ((x + y) & 1) and (y & 1)
     87        elif c < 0.6:
     88            c = (x + y) & 1
     89        elif c < 0.8:
     90            c = ((x + y) & 1) or (y & 1)
     91        else:
     92            c = 1.
     93        dest.setGray(x, y, c)
     94dest.writePng("test5.png")
     95
     96
Note: See TracChangeset for help on using the changeset viewer.