モザイクをかけるプログラムと、モザイクを消すプログラムをセットで作りました。
上のサンプル画像は画像の一部にモザイクがかかっていますが、モザイクはもとから外すことができるように作ってあります。そして画像が異なると、モザイクの模様も異なります。
以下がモザイクを外すためのコードです。
from PIL import Image
import os, tkinter.filedialog, tkinter.messagebox
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('','無修正にしたい画像を選んでください')
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
im = Image.open(file)
size =im.size
for n in range(2):
bun = []
for y in range(size[1]):
for x in range(size[0]):
bun.append(im.getpixel((x, y))[0])
for y in range(size[1]):
for x in range(size[0]):
bun.append(im.getpixel((x, y))[1])
for y in range(size[1]):
for x in range(size[0]):
bun.append(im.getpixel((x, y))[2])
j=0
for y in range(size[1]):
for x in range(size[0]):
r = bun[j]
g = bun[j+1]
b = bun[j+2]
j = j + 3
im.putpixel((x, y),( r,g,b))
im.save("mosaic01.png")
tkinter.messagebox.showinfo('',"無修正にして保存しました")
※モザイクを外してみたい方はこれらの画像をコピーして使ってみてください。
※コピーした画像をパソコンに保存する際は「.png」で保存するといいかと思います。
以下がモザイクをかけるコードです。
from PIL import Image
import os, tkinter.filedialog, tkinter.messagebox
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('','修正したい画像を選んでください')
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
im = Image.open(file)
size =im.size
for n in range(2):
bun = []
for y in range(size[1]):
for x in range(size[0]):
bun.append(im.getpixel((x, y))[0])
bun.append(im.getpixel((x, y))[1])
bun.append(im.getpixel((x, y))[2])
j=0
for y in range(size[1]):
for x in range(size[0]):
r = bun[j]
g = bun[j + len(bun)//3]
b = bun[j + len(bun)//3 * 2]
im.putpixel((x, y), (r, g, b))
j=j+1
im.save("mosaic01.png")
tkinter.messagebox.showinfo('',"修正して保存しました")
以上がモザイクを消す方法と作り方でした。