#!/usr/bin/env python import sys from math import sqrt MAXPIXELS = 320 * 240 x, y = float(sys.argv[1]), float(sys.argv[2]) ratio = x / y if (x * y) > MAXPIXELS: x1 = sqrt(MAXPIXELS * ratio) y1 = sqrt(MAXPIXELS / ratio) else: x1, y1 = x, y c = [] for i in range(-1, 2): for j in range(-1, 2): xt = float((int(x1 / 16) + i) * 16) yt = float((int(y1 / 16) + j) * 16) rt = xt / yt dres = (xt * yt - MAXPIXELS) / MAXPIXELS drat = abs(ratio - rt) if (xt * yt) <= MAXPIXELS: c.append([drat - dres, xt, yt, rt, xt * yt, dres]) c.sort(lambda x,y: cmp(x[0], y[0])) nx, ny = c[0][1], c[0][2] nratio = float(nx) / float(ny) sys.stderr.write("%f -> %f\n" % (ratio, nratio)) print "%dx%d" % (nx, ny) ratio = x / y if (x * y) > MAXPIXELS: x1 = int (sqrt(MAXPIXELS * ratio) / 16 + 0.5) * 16 y1 = int (float (MAXPIXELS) / x1 / 16) * 16 else: x1, y1 = x, y nratio = float(x1) / float(y1) sys.stderr.write("%f -> %f\n" % (ratio, nratio)) print "%dx%d (%.2f%%)" % (x1, y1, float (x1 * y1) / MAXPIXELS * 100 )