Pixelify
This commit is contained in:
Voussoir 2014-12-15 01:23:15 -08:00
parent e81e2a22bf
commit d21199dafa
11 changed files with 223 additions and 0 deletions

120
Dots/dots.py Normal file
View file

@ -0,0 +1,120 @@
import tkinter
import threading
import time
class CanvasGame:
def managementthread(self):
while True:
w = self.pressed_dict.get('w', False)
s = self.pressed_dict.get('s', False)
a = self.pressed_dict.get('a', False)
d = self.pressed_dict.get('d', False)
if w:
self.velocity_y -= self.velocity_speedup
if s:
self.velocity_y += self.velocity_speedup
if a:
self.velocity_x -= self.velocity_speedup
if d:
self.velocity_x += self.velocity_speedup
if not any(movement for movement in [w,a,s,d]):
nondirectional = abs(self.velocity_x) + abs(self.velocity_y)
nondirectional /= 2
if nondirectional < self.velocity_minimum:
self.velocity_x = 0
self.velocity_y = 0
else:
if self.velocity_x != 0:
self.velocity_x *= self.velocity_slowdown
if self.velocity_y != 0:
self.velocity_y *= self.velocity_slowdown
self.velocity_x = self.numbercap(self.velocity_x, self.velocity_maximum)
self.velocity_y = self.numbercap(self.velocity_y, self.velocity_maximum)
self.player_x += self.velocity_x
self.player_y += self.velocity_y
x = self.x_camera + self.player_x
y = self.y_camera + self.player_y
xdiff = x - self.gamewidthcenter
ydiff = y - self.gameheightcenter
if xdiff > self.camera_distance:
self.x_camera -= abs(xdiff / self.camera_distance)
elif xdiff < -self.camera_distance:
self.x_camera += abs(xdiff / self.camera_distance)
if ydiff > self.camera_distance:
self.y_camera -= abs(ydiff / self.camera_distance)
elif ydiff < -self.camera_distance:
self.y_camera += abs(ydiff / self.camera_distance)
#print(self.player_x, x)
self.canvas.coords(self.player, x-self.player_radius, y-self.player_radius,
x+self.player_radius, y+self.player_radius)
time.sleep(0.017)
def numbercap(self, i, cap):
if i > cap:
i = cap
elif i < -cap:
i = -cap
return i
def pushkey(self, event):
#print(event.char, "Down")
self.pressed_dict[event.char] = True
def releasekey(self, event):
#print(event.char, "Up")
self.pressed_dict[event.char] = False
def __init__(self):
self.t = tkinter.Tk()
self.pressed_dict = {}
self.gamewidth = 640
self.gameheight = 480
self.gamewidthcenter = self.gamewidth / 2
self.gameheightcenter = self.gameheight / 2
self.canvas = tkinter.Canvas(self.t, width=self.gamewidth, height=self.gameheight)
self.x_camera = (self.gamewidth / 2)
self.y_camera = (self.gameheight / 2)
x = 0
y = 0
self.player_x = x
self.player_y = y
self.player_radius = 3
self.player = self.canvas.create_oval(x-self.player_radius, y-self.player_radius,
x+self.player_radius, y+self.player_radius,
fill="#ff0")
self.camera = self.canvas.create_oval(self.x_camera, self.y_camera, self.x_camera, self.y_camera)
self.camera_distance = 20
self.playerthread = threading.Thread(name="Playerthread", target=self.managementthread)
self.playerthread.daemon = True
self.velocity_x = 0
self.velocity_y = 0
self.velocity_maximum = 4
self.velocity_minimum = 0.2
self.velocity_slowdown = 0.95
self.velocity_speedup = 0.6
self.entities = []
self.canvas.bind("<KeyPress>", self.pushkey)
self.canvas.bind("<KeyRelease>", self.releasekey)
self.canvas.focus_set()
self.playerthread.start()
self.canvas.pack()
self.t.mainloop()
c = CanvasGame()

43
Pixelify/README.md Normal file
View file

@ -0,0 +1,43 @@
Pixelify
========
Takes an image, or a folder full of images, and produces pixelated versions of each image according to an "objective". That is, how the image would look if it was forced to fit into an *objective x objective* frame. But, the actual output file will be the same dimensions as the original, simply pixelated.
Examples:
You are in a folder called C:\pics where there are 2 images: 1.png, 2.png
Path to image or directory
> 1.png
Pixel Objective
> 32
A folder called "pixel" is created, and 1_32.png is inside.
____________
Path to image or directory
> 1.png
Pixel Objective
> 32, 64, 128
1_32.png, 1_64.png, and 1_128.png have been created
___________
Path to image or directory
>
Pixel Objective
> 32
Path was left completely blank (no spaces or anything), so it uses the current folder.
1_32.png and 2_32.png have been created.
____________
Path to image or directory
> C:\otherfolder
Pixel Objective
> 24
C:\otherfolder\pixel\ is now full of 24-objective images.

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

60
Pixelify/pixelify.py Normal file
View file

@ -0,0 +1,60 @@
from PIL import Image
import os
def boot():
path = input("Path to image or directory\n> ")
if path == '':
path = os.getcwd()
objectives = input("Pixel Objective\n> ")
objectives = objectives.replace(' ', '')
objectives = [int(x) for x in objectives.split(',')]
pixelify(path, objectives)
def pixelify(path, objectives=[32], subfolder="pixel"):
if '.' in path:
name = path.split('/')[-1]
path = '/'.join(path.split('/')[:-1])
images = [name]
else:
images = os.listdir(path)
if path[-1] in ['/', '\\']:
path = path[:-1]
done = False
while not done:
done = True
for name in images:
ext = name.lower()[-4:]
if ext != '.png' and ext != '.jpg':
done = False
images.remove(name)
if name != subfolder:
print('Unlisted "%s": not .jpg or .png' % name)
break
newdir = path +'/' + subfolder + '/'
if not os.path.exists(newdir):
print('Creating directory: ' + newdir)
os.makedirs(newdir)
for name in images:
filepath = path + '/' + name
image = Image.open(filepath)
for objective in objectives:
print("Working: " + name, objective)
image_width = image.size[0]
image_height = image.size[1]
ratio = objective / max([image_width, image_height])
new_width = image_width * ratio
new_height = image_height * ratio
nimage = image.resize((round(new_width), round(new_height)), 1)
nimage = nimage.resize((image_width, image_height), 0)
parts = name.split('.')
newpath = newdir + parts[0] + '_' + str(objective) + '.' + parts[1]
nimage.save(newpath)
boot()