質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

553閲覧

pythonでフォトフレームを作りたいが縦横関係なくなる

okazu_03.22

総合スコア0

Pygame

Pygameは、ビデオゲームの製作用に設計されたクロスプラットフォームのPythonモジュールセットです。Pythonでコンピューターグラフィックスと音声を扱うためのライブラリが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/01/20 06:51

編集2023/01/21 07:16

表示したい画像例
表示たい画像例
実行すると発生する問題イメージ説明
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':

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2023/01/20 08:11

まずはコードの一部分が崩れてインデントなどがおかしく表示されていますので修正ください。 > 縦長画像が横向きに表示されるようになりました。 コード上では画像のスケーリングのみで回転するは処理しておらず 元画像をそのまま表示しているようにみえます。 つまり他の画像表示ソフトと同じ向きに表示されているのではないでしょうか? そうでない(他の画像表示ソフトとは異なる)なら いま、どのように表示されているのかを見た目で分かるように模式図なりイメージを追記ください。 あるいは「縦長画像なら(右左どちらかに?)90度回転させたい」ということでしょうか?
okazu_03.22

2023/01/20 08:48

表示する画面は横画面で、縦長の写真をそのまま表示することができないということです。 縦長の写真も関係なく横画面に表示されるのを直したいのです。 回転するコードも試したのですが、画面が真っ暗なままになってしまいました、
can110

2023/01/20 09:16

やはり「縦長の写真をそのまま表示する」という部分が分かりません。 言葉では説明は難しいと思うので 現状と理想の結果の模式図なりイメージ(画像)を追記すると回答得られやすくなるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問