夕焼けグリッチ
5x5のタイル状にしてみた。
好みの夕暮れの色があるように、好みのノイズ量があるに違いないので、もう少しノイズの入れ方を考えないと。
import base64,re,Image
from random import randint
def glitch(infile,outfile):
jpg_text = base64.encodestring(open(infile,"rb").read())
glitched_text = ""
count = 0
width,height = Image.open(infile).size
num = width * height / 10000
for c in jpg_text:
if c == '0':
if randint(0,num) == 0:
count += 1
glitched_text += str(randint(0,9))
else:
glitched_text += c
else:
glitched_text += c
glitched_jpg = base64.decodestring(glitched_text)
open(outfile,"wb").write(glitched_jpg)
return count
if __name__ == '__main__':
for i in range(25):
outfile = "test_%d.jpg" % i
count = glitch("/Users/kzfm/yuki3.jpg",outfile)
#print "%d: %d" % (i,count)
tiled_im = Image.new('RGB',(1600,1200))
tiled_px = tiled_im.load()
for i in range(5):
for j in range(5):
n = 5*i+j;
imgfile = "/Users/kzfm/python/test_%d.jpg" % n
im = Image.open(imgfile)
px = im.load()
for x in range(320):
for y in range(240):
nx = 320 * j + x
ny = 240 * i + y
tiled_px[nx,ny] = px[x,y]
tiled_im.show()
昼下がりグリッチ
今日もグリッチ
import Image,sys
from random import randint
file = sys.argv[1]
im = Image.open(file)
width,height = im.size
interval = 0
for h in range(height):
if(interval == 0):
interval = randint(0,height-1)
rand_slide_x = randint(0,14)
rand_slide_y = randint(0,4)
slide_x = 0
slide_y = 0
else:
interval -= 1
slide_x += rand_slide_x
slide_y += rand_slide_y
for w in range(width):
current = (w,h)
new_h = h + slide_y
new_w = w + slide_x
if new_h >= height: new_h = h
if new_w >= width: new_w = w
src = (new_w,new_h)
im.putpixel(current,im.getpixel(src))
im.show()
im.save("glitch091021.jpg")
夕暮れグリッチ
そしたらベンジーあたしをグリッチで殴って
import base64,re
from random import randint
jpgfile = "/Users/kzfm/orig.jpg"
jpg_text = base64.encodestring(open(jpgfile,"rb").read())
glitched_text = ""
for c in jpg_text:
if c == '0':
glitched_text += str(randint(0,9))
else:
glitched_text += c
glitched_jpg = base64.decodestring(glitched_text)
open("glitched.jpg","wb").write(glitched_jpg)
Jpeg においては DCT を施すために如何なる入力画像も 8x8 画素のブロックに分割されるらしいのでbase64エンコーディングしたのをいじってデコードすると8x8のブロックの単位でノイズが混じるっていう理解でいいのか。
参考
PILでglitch
早朝グリッチ。PILのputpixelは遅いので、1.1.6からはim.loadを使えとのこと。
import Image,sys
from random import randint
file = sys.argv[1]
im = Image.open(file)
width,height = im.size
slide_x = 0
slide_y = 0
rand_slide_x = randint(0,14)
rand_slide_y = randint(0,4)
pix = im.load()
for h in range(height):
slide_x += rand_slide_x
slide_y += rand_slide_y
for w in range(width):
new_h = h + slide_y
new_w = w + slide_x
if new_h >= height: new_h = h
if new_w >= width: new_w = w
pix[w,h] = pix[new_w,new_h]
im.show()
im.save("glitch091020.jpg")
そしてGlitch: Perfet Imperfectionsもポチッた
Glitch: Perfet ImperfectionsIman Moradi,Ant Scott,Joe Gilmore,Christopher Murphy
Mark Batty Pub / ¥ 3,105 ()
通常1~3週間以内に発送
参考



無罪モラトリアム