| 1 |
teddy |
1.1 |
#!/usr/bin/python |
| 2 |
|
|
|
| 3 |
|
|
import cgi, Image, sys |
| 4 |
|
|
from string import atoi |
| 5 |
|
|
|
| 6 |
|
|
side= 400 |
| 7 |
|
|
maxiter= 200 |
| 8 |
|
|
|
| 9 |
|
|
form= cgi.FieldStorage() |
| 10 |
|
|
julia= Image.new("L",(side,side)) |
| 11 |
|
|
|
| 12 |
|
|
inx= atoi(form['image.x'].value) |
| 13 |
|
|
iny= atoi(form['image.y'].value) |
| 14 |
|
|
side2= side-1 |
| 15 |
|
|
|
| 16 |
|
|
c= (inx-285)/142.5 |
| 17 |
|
|
c= c+(iny-285)*(0+1j)/142.5 |
| 18 |
|
|
|
| 19 |
|
|
for x in range(0,side): |
| 20 |
|
|
for y in range(0,side/2+1): |
| 21 |
|
|
z= (x-(side/2.0))/(side/3.0) |
| 22 |
|
|
z= z+(y-(side/2.0))*(0+1j)/(side/3.0) |
| 23 |
|
|
i= 0 |
| 24 |
|
|
while i<maxiter and abs(z)<2: |
| 25 |
|
|
z= z**2+c |
| 26 |
|
|
i= i+1 |
| 27 |
|
|
color= ((i**0.5)*40%256) |
| 28 |
|
|
if i<maxiter: |
| 29 |
|
|
julia.putpixel((x,y),color) |
| 30 |
|
|
julia.putpixel((side2-x,side2-y),color) |
| 31 |
|
|
|
| 32 |
|
|
print "Content-type: image/png" |
| 33 |
|
|
print |
| 34 |
|
|
|
| 35 |
|
|
julia.save(sys.stdout, "PNG") |
| 36 |
|
|
|
| 37 |
|
|
# Local Variables: |
| 38 |
|
|
# version-control: t |
| 39 |
|
|
# mode: python |
| 40 |
|
|
# backup-by-copying: nil |
| 41 |
|
|
# backup-by-copying-when-mismatch: nil |
| 42 |
|
|
# kept-old-versions: 50 |
| 43 |
|
|
# kept-new-versions: 50 |
| 44 |
|
|
# End: |