<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>PIL / Drkcore</title><link>http://blog.kzfmix.com/PIL</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Tue, 12 Jan 2010 11:23:08 +0919</lastBuildDate><item><title>pythonで画像のリサイズ</title><link>http://blog.kzfmix.com/entry/1203852948</link><description>&lt;p&gt;&lt;a href="http://www.pythonware.com/products/pil/"&gt;PIL&lt;/a&gt;を使うと簡単にかける&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Image.open(f).resize((480,360)).save(outfile)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;と書くだけで読み込んでリサイズして別名で保存できる。そんな感じで、とりあえず&lt;a href="http://blog.kzfmix.com/entry/1202822704"&gt;flickrのかわり&lt;/a&gt;に、リサイズして保存したら&lt;a href="http://blog.2310.net/contents/individual/000022.php"&gt;markdown書式&lt;/a&gt;でURLを出力するようなスクリプトを書いた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import sys,datetime
import Image

if len(sys.argv) &amp;lt; 2:
  print sys.argv[0], " image_file"

for f in sys.argv[1:]:
  now = datetime.datetime.now().strftime('%s')
  outfile =  "/var/www/html/images/blog/" + now + ".jpg"
  Image.open(f).resize((480,360)).save(outfile)
  print r"![%s](http://www.kzfmix.com/images/blog/%s)" % (now,now + ".jpg")
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://www.kzfmix.com/images/blog/1203853093.jpg" alt="1203853093" /&gt;&lt;/p&gt;

&lt;p&gt;あとはドラッグドロップで転送するようにする&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:23:08 +0919</pubDate><category>Python</category><category>PIL</category></item><item><title>PILの画像の圧縮</title><link>http://blog.kzfmix.com/entry/1203940798</link><description>&lt;p&gt;昨日の&lt;a href="http://blog.kzfmix.com/entry/1203852948"&gt;PIL&lt;/a&gt;のリサイズ後のザラザラ感が気になったので、フィルタを比較してみた。&lt;a href="http://www.kzfmix.com/images/blog/sample.jpg"&gt;きろく&lt;/a&gt;を圧縮&lt;/p&gt;

&lt;p&gt;左上から右下に向かってnearest,bilinear,bicubic,antialias&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.kzfmix.com/images/blog/sample_nearest.jpg" alt="nearest" /&gt;
&lt;img src="http://www.kzfmix.com/images/blog/sample_bilinear.jpg" alt="bilinear" /&gt;
&lt;img src="http://www.kzfmix.com/images/blog/sample_bicubic.jpg" alt="bicubic" /&gt;
&lt;img src="http://www.kzfmix.com/images/blog/sample_antialias.jpg" alt="antialias" /&gt;&lt;/p&gt;

&lt;p&gt;antialiasが無難か。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:22:54 +0919</pubDate><category>Python</category><category>PIL</category></item><item><title>夕焼けグリッチ</title><link>http://blog.kzfmix.com/entry/1256112234</link><description>&lt;p&gt;5x5のタイル状にしてみた。&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.kzfmix.com/images/blog/1256111943.jpg" alt="1256111943" /&gt; &lt;/p&gt;

&lt;p&gt;好みの夕暮れの色があるように、好みのノイズ量があるに違いないので、もう少しノイズの入れ方を考えないと。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;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()
&lt;/code&gt;&lt;/pre&gt;
</description><pubDate>Wed, 21 Oct 2009 17:04:32 +0919</pubDate><category>Python</category><category>PIL</category><category>glitch</category></item><item><title>昼下がりグリッチ</title><link>http://blog.kzfmix.com/entry/1256101855</link><description>&lt;p&gt;今日もグリッチ&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;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 &amp;gt;= height: new_h = h
        if new_w &amp;gt;= width: new_w = w
        src = (new_w,new_h)
        im.putpixel(current,im.getpixel(src))

im.show()
im.save("glitch091021.jpg")
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://www.kzfmix.com/images/blog/1256101630.jpg" alt="1256101630" /&gt; &lt;/p&gt;
</description><pubDate>Wed, 21 Oct 2009 14:11:21 +0919</pubDate><category>Python</category><category>PIL</category><category>glitch</category></item><item><title>PILでglitch</title><link>http://blog.kzfmix.com/entry/1255994030</link><description>&lt;p&gt;早朝グリッチ。PILのputpixelは遅いので、1.1.6からはim.loadを使えとのこと。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;
&lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="n"&gt;random&lt;/span&gt; &lt;span class="n"&gt;import&lt;/span&gt; &lt;span class="n"&gt;randint&lt;/span&gt;

&lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;1&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;im&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;im&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;size&lt;/span&gt;
&lt;span class="n"&gt;slide_x&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 0
&lt;span class="n"&gt;slide_y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; 0
&lt;span class="n"&gt;rand_slide_x&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt;14&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;rand_slide_y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;0&lt;span class="p"&gt;,&lt;/span&gt;4&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;pix&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;im&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;slide_x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rand_slide_x&lt;/span&gt;
    &lt;span class="n"&gt;slide_y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;rand_slide_y&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="n"&gt;in&lt;/span&gt; &lt;span class="n"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;new_h&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;slide_y&lt;/span&gt;
        &lt;span class="n"&gt;new_w&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;slide_x&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;new_h&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;new_h&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;new_w&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;new_w&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;
        &lt;span class="n"&gt;pix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pix&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;new_w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;new_h&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;im&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;im&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&amp;quot;&lt;span class="n"&gt;glitch091020&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;jpg&lt;/span&gt;&amp;quot;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;img alt="1255993806" src="http://www.kzfmix.com/images/blog/1255993806.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;そしてGlitch: Perfet Imperfectionsもポチッた&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0979966663/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/617sDQz-P3L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Glitch: Designing Imperfection&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    Mark Batty Publisher / 2839円 ( 2009-09-16 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;参考&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hysysk.blogspot.com/2007/11/todays-glitch-2.html"&gt;today's glitch 2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/koyachi/20071107/1194413657"&gt;きょうのglitch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 20 Oct 2009 14:24:51 +0919</pubDate><category>Python</category><category>PIL</category><category>glitch</category></item></channel></rss>