def _smart_fn(filename): try: image_w, image_h = Util.get_size(filename) primary_w, primary_h = Util.get_primary_display_size(hidpi_scaled=True) total_w, total_h = Util.get_multimonitor_display_size() if image_w * image_h * 10 < primary_w * primary_h: # image way smaller than primary monitor, tile it return DisplayModeData(set_wallpaper_param="wallpaper") else: image_ratio = image_w / image_h primary_ratio = primary_w / primary_h total_ratio = total_w / total_h if 2 * abs(image_ratio - primary_ratio) / (image_ratio + primary_ratio) < 0.2: # image ratio is close to primary screen ratio, zoom return DisplayModeData(set_wallpaper_param="zoom") elif 2 * abs(image_ratio - total_ratio) / (image_ratio + total_ratio) < 0.2: # image ratio is close to multimonitor total screen ratio, span it return DisplayModeData(set_wallpaper_param="spanned") else: # image ratio not close to screen ratio, fit with a blurred background cmd = IMAGEMAGICK_FIT_WITH_BLUR.replace( "%W", str(primary_w)).replace("%H", str(primary_h)) return DisplayModeData(set_wallpaper_param="zoom", imagemagick_cmd=cmd) except: return DisplayModeData(set_wallpaper_param="zoom")
def test_get_size(self): self.assertEqual((32, 32), Util.get_size("test.jpg")) self.assertRaises(Exception, lambda: Util.get_size("fake_image.jpg"))
def test_get_size(self): self.assertEquals((32, 32), Util.get_size('test.jpg')) self.assertRaises(Exception, lambda: Util.get_size('fake_image.jpg'))