Skip to content

Instantly share code, notes, and snippets.

@eiszfuchs
Last active August 29, 2015 14:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eiszfuchs/b3887853a149613935d6 to your computer and use it in GitHub Desktop.
Save eiszfuchs/b3887853a149613935d6 to your computer and use it in GitHub Desktop.
from __future__ import print_function
from os import makedirs, rename, path
from glob import glob
from lxml import etree
import subprocess
sizes = {
"mdpi": 1.0,
"hdpi": 1.5,
"xhdpi": 2.0,
"xxhdpi": 3.0,
}
inkscape_executable = "inkscape"
imagemagick_executable = "convert"
inkscape_osx = "/Applications/Inkscape.app/Contents/Resources/bin/inkscape"
if path.exists(inkscape_osx):
inkscape_executable = inkscape_osx
def ensure_output_folder(filename):
if not path.exists(filename):
makedirs(filename)
target_folder = path.join("..", "Conversations", "src", "main", "res")
namespace_def = {
"sodipodi": "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd",
}
for svg_filename in glob("*.svg"):
with open(svg_filename, "r") as svg_file:
svg_data = svg_file.read()
root = etree.fromstring(svg_data)
base_width = int(root.get("width"))
base_height = int(root.get("height"))
guides = root.findall(".//sodipodi:guide", namespaces=namespace_def)
for size, scale in sizes.items():
width = base_width * scale
height = base_height * scale
output_folder = path.join(target_folder, "drawable-%s" % size)
png_filename = svg_filename.replace(".svg", ".9.png")
output_filename = path.join(output_folder, png_filename)
ensure_output_folder(output_folder)
subprocess.call([
inkscape_executable,
"-z", "-C", "-d", str(90 * scale),
"-f", svg_filename,
"-e", output_filename,
])
subprocess.call([
imagemagick_executable,
output_filename,
"-matte", "-bordercolor", "none", "-border", "1",
output_filename,
])
top = []
right = []
bottom = []
left = []
for guide in guides:
orientation = guide.get("orientation")
x, y = guide.get("position").split(",")
x, y = int(x), int(y)
if orientation == "1,0" and y == base_height:
top.append(x * scale)
if orientation == "0,1" and x == base_width:
right.append((base_height - y) * scale)
if orientation == "1,0" and y == 0:
bottom.append(x * scale)
if orientation == "0,1" and x == 0:
left.append((base_height - y) * scale)
top_line = ["-draw", 'rectangle %d,%d %d,%d' % (min(top) + 1, 0, max(top), 0)]
right_line = ["-draw", 'rectangle %d,%d %d,%d' % (width + 1, min(right) + 1, width + 1, max(right))]
bottom_line = ["-draw", 'rectangle %d,%d %d,%d' % (min(bottom) + 1, height + 1, max(bottom), height + 1)]
left_line = ["-draw", 'rectangle %d,%d %d,%d' % (0, min(left) + 1, 0, max(left))]
subprocess.call([
imagemagick_executable,
output_filename,
"-fill", "black", "-stroke", "none",
] + top_line + right_line + bottom_line + left_line + [
output_filename,
])
#!/bin/sh
alias inkscape="/Applications/Inkscape.app/Contents/Resources/bin/inkscape"
# mdpi 1.0 90
# hdpi 1.5 135
# xhdpi 2.0 180
# xxhdpi 3.0 270
mkdir drawable-mdpi/
inkscape -z -C -d 90 -f message_bubble_received.svg \
-e drawable-mdpi/message_bubble_received.png
convert drawable-mdpi/message_bubble_received.png \
-matte -bordercolor none -border 1 \
drawable-mdpi/message_bubble_received.png
convert drawable-mdpi/message_bubble_received.png \
-fill black -stroke none \
-draw "rectangle 21,0 24,0" \
-draw "rectangle 37,9 37,20" \
-draw "rectangle 21,29 24,29" \
-draw "rectangle 0,13 0,16" \
drawable-mdpi/message_bubble_received.png
cp drawable-mdpi/message_bubble_received.png \
../Conversations/src/main/res/drawable-mdpi/message_bubble_received.9.png
inkscape -z -C -d 90 -f message_bubble_sent.svg \
-e drawable-mdpi/message_bubble_sent.png
convert drawable-mdpi/message_bubble_sent.png \
-matte -bordercolor none -border 1 \
drawable-mdpi/message_bubble_sent.png
convert drawable-mdpi/message_bubble_sent.png \
-fill black -stroke none \
-draw "rectangle 13,0 16,0" \
-draw "rectangle 37,9 37,20" \
-draw "rectangle 13,29 16,29" \
-draw "rectangle 0,13 0,16" \
drawable-mdpi/message_bubble_sent.png
cp drawable-mdpi/message_bubble_sent.png \
../Conversations/src/main/res/drawable-mdpi/message_bubble_sent.9.png
mkdir drawable-hdpi/
inkscape -z -C -d 135 -f message_bubble_received.svg \
-e drawable-hdpi/message_bubble_received.png
convert drawable-hdpi/message_bubble_received.png \
-matte -bordercolor none -border 1 \
drawable-hdpi/message_bubble_received.png
convert drawable-hdpi/message_bubble_received.png \
-fill black -stroke none \
-draw "rectangle 31,0 36,0" \
-draw "rectangle 55,13 55,30" \
-draw "rectangle 31,43 36,43" \
-draw "rectangle 0,19 0,24" \
drawable-hdpi/message_bubble_received.png
cp drawable-hdpi/message_bubble_received.png \
../Conversations/src/main/res/drawable-hdpi/message_bubble_received.9.png
inkscape -z -C -d 135 -f message_bubble_sent.svg \
-e drawable-hdpi/message_bubble_sent.png
convert drawable-hdpi/message_bubble_sent.png \
-matte -bordercolor none -border 1 \
drawable-hdpi/message_bubble_sent.png
convert drawable-hdpi/message_bubble_sent.png \
-fill black -stroke none \
-draw "rectangle 19,0 24,0" \
-draw "rectangle 55,13 55,30" \
-draw "rectangle 19,43 24,43" \
-draw "rectangle 0,19 0,24" \
drawable-hdpi/message_bubble_sent.png
cp drawable-hdpi/message_bubble_sent.png \
../Conversations/src/main/res/drawable-hdpi/message_bubble_sent.9.png
mkdir drawable-xhdpi/
inkscape -z -C -d 180 -f message_bubble_received.svg \
-e drawable-xhdpi/message_bubble_received.png
convert drawable-xhdpi/message_bubble_received.png \
-matte -bordercolor none -border 1 \
drawable-xhdpi/message_bubble_received.png
convert drawable-xhdpi/message_bubble_received.png \
-fill black -stroke none \
-draw "rectangle 41,0 48,0" \
-draw "rectangle 73,17 73,40" \
-draw "rectangle 41,57 48,57" \
-draw "rectangle 0,25 0,32" \
drawable-xhdpi/message_bubble_received.png
cp drawable-xhdpi/message_bubble_received.png \
../Conversations/src/main/res/drawable-xhdpi/message_bubble_received.9.png
inkscape -z -C -d 180 -f message_bubble_sent.svg \
-e drawable-xhdpi/message_bubble_sent.png
convert drawable-xhdpi/message_bubble_sent.png \
-matte -bordercolor none -border 1 \
drawable-xhdpi/message_bubble_sent.png
convert drawable-xhdpi/message_bubble_sent.png \
-fill black -stroke none \
-draw "rectangle 25,0 32,0" \
-draw "rectangle 73,17 73,40" \
-draw "rectangle 25,57 32,57" \
-draw "rectangle 0,25 0,32" \
drawable-xhdpi/message_bubble_sent.png
cp drawable-xhdpi/message_bubble_sent.png \
../Conversations/src/main/res/drawable-xhdpi/message_bubble_sent.9.png
mkdir drawable-xxhdpi/
inkscape -z -C -d 270 -f message_bubble_received.svg \
-e drawable-xxhdpi/message_bubble_received.png
convert drawable-xxhdpi/message_bubble_received.png \
-matte -bordercolor none -border 1 \
drawable-xxhdpi/message_bubble_received.png
convert drawable-xxhdpi/message_bubble_received.png \
-fill black -stroke none \
-draw "rectangle 61,0 72,0" \
-draw "rectangle 109,25 109,60" \
-draw "rectangle 61,85 72,85" \
-draw "rectangle 0,37 0,48" \
drawable-xxhdpi/message_bubble_received.png
cp drawable-xxhdpi/message_bubble_received.png \
../Conversations/src/main/res/drawable-xxhdpi/message_bubble_received.9.png
inkscape -z -C -d 270 -f message_bubble_sent.svg \
-e drawable-xxhdpi/message_bubble_sent.png
convert drawable-xxhdpi/message_bubble_sent.png \
-matte -bordercolor none -border 1 \
drawable-xxhdpi/message_bubble_sent.png
convert drawable-xxhdpi/message_bubble_sent.png \
-fill black -stroke none \
-draw "rectangle 37,0 48,0" \
-draw "rectangle 109,25 109,60" \
-draw "rectangle 37,85 48,85" \
-draw "rectangle 0,37 0,48" \
drawable-xxhdpi/message_bubble_sent.png
cp drawable-xxhdpi/message_bubble_sent.png \
../Conversations/src/main/res/drawable-xxhdpi/message_bubble_sent.9.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment