
seen from Singapore
seen from China
seen from Belgium
seen from United States

seen from Thailand
seen from United States
seen from Türkiye
seen from United Kingdom
seen from United States

seen from Brazil
seen from China
seen from China

seen from United Kingdom
seen from Singapore

seen from United Kingdom
seen from Russia
seen from China
seen from Netherlands

seen from Belgium
seen from Indonesia
Introducing Drawable.org
I wanted to try Play Framework 2.0 and Bootstrap, so inspired by Android Asset Studio and 9patch-resizer, I have created tiny service, which converts android xhdpi drawables into hdpi, mdpi and ldpi and structures them into android project directory hierarchy. I hope, somebody will find it useful. Please give me feedback, if you find any issues, or if you have any feature requests. By the way you can find service on www.drawable.org
Image conversion for Android development
I have created simple python script for converting hdpi images into mdpi and ldpi. It converts all png, jpg and gif images in folder, where script is running.
You must have installed PIL module for Python. If you dont want to install PIL module, you can download script with included PIL module.
1: import os
2: import shutil
3: import sys
4: sys.path.append("module")
5: from PIL import Image
6:
7: path = os.getcwd()
8: dirList = os.listdir(path)
9:
10: os.mkdir("res")
11: os.mkdir("res/drawable-hdpi")
12: os.mkdir("res/drawable-mdpi")
13: os.mkdir("res/drawable-ldpi")
14:
15: for fname in dirList:
16:
17: outputFile = os.path.splitext(os.path.basename(fname))
18:
19: if (outputFile[1] == ".png" or outputFile[1] == ".jpg" or
20: outputFile[1] == ".gif"):
21:
22: img = Image.open(fname)
23: size = img.size
24:
25: x = int(img.size[0] * 0.66)
26: y = int(img.size[1] * 0.66)
27:
28: out = img.resize((x, y))
29:
30: outputFile = os.path.splitext(os.path.basename(fname))
31:
32: out.save("res/drawable-mdpi/" + outputFile[0] + "-mdpi" + outputFile[1])
33:
34: x = int(img.size[0] * 0.5)
35: y = int(img.size[1] * 0.5)
36:
37: out = img.resize((x, y))
38:
39: out.save("res/drawable-ldpi/" + outputFile[0] + "-ldpi" + outputFile[1])
40:
41: shutil.move(fname, "res/drawable-hdpi/" +
42: outputFile[0] + "-hdpi" + outputFile[1] )
要了解hdpi, mdpi, ldpi的分類之前,你應該會需要了解
Android的螢幕尺寸分類
dp與px的區別
從I am Happy Android,3C看到一篇關於Android程式的hdpi, mdpi, ldpi的分別
本來是為了要解決圖檔Out of Memory的問題,後來發現自己的專案只有一組圖
造成程式在執行時,無法動態依據螢幕尺寸套用不同的圖,就常常造成out of memory的問題
後來在把圖檔一次縮圖或放大尺寸成三組圖分別對應hdpi, mdpi, ldpi後
程式運作就比較正常了~~~
至於Android是如何判斷手機螢幕是屬於hdpi, mdpi, ldpi呢?
可以參考之前的Android Screen Sizes and Densities說明