XPERIA用の壁紙を自動生成
今更docomo用のスマートフォンXPERIAを購入(ヤマダ電気で, モロモロの値引きを使用して, 3万円弱でした)。
とりあえず、壁紙を作ってみました。
XPERIA用壁紙の仕様
- 960ピクセル×854ピクセル(結構大きい)
- ステータスバーで上部30ピクセルが隠れる
- アプリケーションバーで下部50ピクセルが隠れる
実際には仮想デスクトップが5枚あるので、一度に見えるのは全体の一部だけ
したがって、一枚絵というか、キャラクターがバーンと中央にいるイラストなどは、切れてしまいます。幾何学模様的な絵の方が良さそうです。
BMPやPNGも、JPEGに変換されてから使われる?
JPEGでは、単色で塗りつぶした四角形などは、圧縮時にディザがかかるので、綺麗に見えません。
グラデーションがある曲線中心のデザインを使いましょう。
Pythonで、PySideを使って、自動生成してみます。
どこかでみたような、ソコソコよさげな壁紙が出来ました。
#encoding: shift-jis #spheres-wallpaper.py from __future__ import division, print_function, unicode_literals from PySide.QtGui import * from PySide.QtCore import * import random from colorsys import * def lighter(color): r, g, b = color.red()/255, color.green()/255, color.blue()/255 h, s, v = rgb_to_hsv(r, g, b) v *= 1.3 r, g, b = hsv_to_rgb(h, s, v) return QColor( min(int(r*255), 255), min(int(g*255), 255), min(int(b*255), 255), ) def drawSphere(painter, pos, radius, color): Delta = 2 pen = painter.pen() pen.setColor(color) pen.setWidth(Delta + 1) painter.setPen(pen) rc = QRect(pos - QPoint(radius, radius), QSize(2*radius, 2*radius)) for i in xrange(10): rc = rc.translated(Delta, Delta) rc.setSize(rc.size() - QSize(Delta*2, Delta*2)) painter.drawArc(rc, 0, 360*16) pen.setColor(lighter(pen.color())) painter.setPen(pen) def main(): app = QApplication([]) width = 960 height = 854 im = QImage(width, height, QImage.Format_ARGB32) painter = QPainter(im) painter.setRenderHint(QPainter.Antialiasing) painter.setBackground(QColor("white")) painter.eraseRect(im.rect()) spheres = [] for i in xrange(1000): r = random.uniform(10, 70) p = QPoint(random.randrange(width), random.randrange(height)) if all((p.x() - p1.x())**2 + (p.y() - p1.y())**2 > (r + r1)**2 for p1, r1 in spheres): spheres.append((p, r)) for i, (pos, radius) in enumerate(spheres): h = random.uniform(0, 1) s = .6 v = .8 color = QColor(*[int(i *255) for i in hsv_to_rgb(h, s, v)]) drawSphere(painter, pos, radius, color) im.save("spheres.png") del painter if "__main__" == __name__: main()