表示したい画像例
実行すると発生する問題
pythonでフォトフレームを作成しようとしています。
画像を画面サイズに合わせることはできたのですが、縦長画像が横向きに表示されるようになりました。
やりたいこと
縦長画像は縦長に、横長画像は横向きに画面サイズに合わせて表示したいです。(ファイル一覧のように)
サブディレクトリの画像も表示できるようにしたいです。
ディレクトリ構成
AA(親ディレクトリ)
B1(子ディレクトリ)
B2(子ディレクトリ)
B3(子ディレクトリ)
ソースコード全体
#!/usr/bin/env python3
import sys
import pygame
import os
import re
from os import listdir
from pygame.locals import QUIT, KEYDOWN, K_ESCAPE
pygame.init()
screen= pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
ssize = screen.get_size()
FPSCLOCK = pygame.time.Clock()
path = "D:\Desktop\新しいフォルダー\V2\"
class File_name:
def init(self,name):
self.flag = 0
self.name = name
local_list = [];
for current_dir, sub_dirs, filenames in os.walk(path):
for file in filenames:
if re.search('.+.(jpg|JPG,PING|ping)$', file) != None:
local_list.append(File_name(file))
list = listdir(path)
list_len = len(list) - 1
interval = 4
def main():
pic_num = 0
pygame.mouse.set_visible(False)
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
sys.exit()
screen.fill((0,0,255)) pic = pygame.image.load(path+list[pic_num]) width = pic.get_width() height = pic.get_height() ratio_w = float(ssize[0]) / float(width) ratio_h = float(ssize[1]) / float(height) if ratio_w < ratio_h: ratio = ratio_w else: ratio = ratio_h size_w = int(width * ratio) size_h = int(height * ratio) if size_w < ssize[0]: org_x = (ssize[0] - size_w) / 2 org_y = 0 else: org_x = 0 org_y = (ssize[1] - size_h) / 2 screen.fill((0,0,0)) screen.blit(pygame.transform.scale(pic, (size_w, size_h)) ,(org_x,org_y)) pygame.display.flip() counter += 1 if((counter % interval) == 0): if(pic_num >= list_len): pic_num = 0 else: pic_num += 1 pygame.display.update() FPSCLOCK.tick(1)
main()
if name == 'main':
あなたの回答
tips
プレビュー