Python:在 Windows Image Viewer 中打开多个图像,并在每个角落打开多个 windows
Python: Opening multiple images in Windows Image Viewer and multiple of such windows in each corner
我是初学者,我相信这很简单,但我无法通过谷歌搜索找到解决方案。
在一个文件夹里,我有9张照片。目前,我突出显示其中的几个并右键单击并在默认图像查看器中打开,然后将 window 放在角落,然后按以下顺序对其余图像执行此操作:
All Photos in Folder
All Photos Opened in each corner
这样我就可以将鼠标悬停在例如左上角 window 上并用鼠标滚动,它会在图像 1.png 和 2.png 之间滚动。如果我将鼠标悬停在右上角并使用鼠标滚轮滚动,图像将在 3.png、4.png 和 5.png 之间滚动。其他两个相同 windows。目前我有很多图像必须手动打开并像这样配置。我想写一个简单的脚本,自动将这些图片以这种方式打开,并将它们排列在每个角落。
我找到了一些打开单个图像的方法,但找不到在照片查看器的单个实例中打开多个图像的方法,也找不到如何重新定位这样的 window。
from PIL import Image
img = Image.open('example.jpg')
img.show()
如有任何帮助,我们将不胜感激!
这可能不是完成我最初问题中的任务的最佳方法,但在 Windows 10 中启用原始 Windows 照片查看器后,遵循本指南:How-to-make-windows-photo-viewer-your-default-image-viewer-on-windows-10
我制作了 4 个文件夹,每个文件夹都有相应的图片(左上角、右上角、左下角和右下角)。
然后我将默认应用设为使用 Windows 照片查看器打开 png 图像。
已安装 win32gui:
pip install win32gui
然后我写了这个似乎有效的脚本:
import os
import win32gui
import time
FIRST_PATH = 'C:\Gale\Img_test\left_bottom\6.png'
SECOND_PATH = 'C:\Gale\Img_test\left_top\1.png'
THIRD_PATH = 'C:\Gale\Img_test\right_bottom\8.png'
FOURTH_PATH = 'C:\Gale\Img_test\right_top\3.png'
folder_paths = [FIRST_PATH, SECOND_PATH, THIRD_PATH, FOURTH_PATH]
TOP_RIGHT_COORD = [954,0,980,530]
TOP_LEFT_COORD = [-10,0,980,530]
BOTTOM_RIGHT_COORD = [954,515,980,530]
BOTTOM_LEFT_COORD = [-10,515,980,530]
def openCharts(paths):
for path in paths:
os.startfile(path)
def enumHandler(hwnd, lParam):
if win32gui.IsWindowVisible(hwnd):
if '1.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, TOP_LEFT_COORD[0], TOP_LEFT_COORD[1], TOP_LEFT_COORD[2],TOP_LEFT_COORD[3], True)
elif '3.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, TOP_RIGHT_COORD[0], TOP_RIGHT_COORD[1], TOP_RIGHT_COORD[2],TOP_RIGHT_COORD[3], True)
elif '6.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, BOTTOM_LEFT_COORD[0], BOTTOM_LEFT_COORD[1], BOTTOM_LEFT_COORD[2],BOTTOM_LEFT_COORD[3], True)
elif '8.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, BOTTOM_RIGHT_COORD[0], BOTTOM_RIGHT_COORD[1], BOTTOM_RIGHT_COORD[2],BOTTOM_RIGHT_COORD[3], True)
openCharts(folder_paths)
time.sleep(0.5)
win32gui.EnumWindows(enumHandler, None)
我是初学者,我相信这很简单,但我无法通过谷歌搜索找到解决方案。
在一个文件夹里,我有9张照片。目前,我突出显示其中的几个并右键单击并在默认图像查看器中打开,然后将 window 放在角落,然后按以下顺序对其余图像执行此操作:
All Photos in Folder
All Photos Opened in each corner
这样我就可以将鼠标悬停在例如左上角 window 上并用鼠标滚动,它会在图像 1.png 和 2.png 之间滚动。如果我将鼠标悬停在右上角并使用鼠标滚轮滚动,图像将在 3.png、4.png 和 5.png 之间滚动。其他两个相同 windows。目前我有很多图像必须手动打开并像这样配置。我想写一个简单的脚本,自动将这些图片以这种方式打开,并将它们排列在每个角落。
我找到了一些打开单个图像的方法,但找不到在照片查看器的单个实例中打开多个图像的方法,也找不到如何重新定位这样的 window。
from PIL import Image
img = Image.open('example.jpg')
img.show()
如有任何帮助,我们将不胜感激!
这可能不是完成我最初问题中的任务的最佳方法,但在 Windows 10 中启用原始 Windows 照片查看器后,遵循本指南:How-to-make-windows-photo-viewer-your-default-image-viewer-on-windows-10
我制作了 4 个文件夹,每个文件夹都有相应的图片(左上角、右上角、左下角和右下角)。
然后我将默认应用设为使用 Windows 照片查看器打开 png 图像。
已安装 win32gui:
pip install win32gui
然后我写了这个似乎有效的脚本:
import os
import win32gui
import time
FIRST_PATH = 'C:\Gale\Img_test\left_bottom\6.png'
SECOND_PATH = 'C:\Gale\Img_test\left_top\1.png'
THIRD_PATH = 'C:\Gale\Img_test\right_bottom\8.png'
FOURTH_PATH = 'C:\Gale\Img_test\right_top\3.png'
folder_paths = [FIRST_PATH, SECOND_PATH, THIRD_PATH, FOURTH_PATH]
TOP_RIGHT_COORD = [954,0,980,530]
TOP_LEFT_COORD = [-10,0,980,530]
BOTTOM_RIGHT_COORD = [954,515,980,530]
BOTTOM_LEFT_COORD = [-10,515,980,530]
def openCharts(paths):
for path in paths:
os.startfile(path)
def enumHandler(hwnd, lParam):
if win32gui.IsWindowVisible(hwnd):
if '1.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, TOP_LEFT_COORD[0], TOP_LEFT_COORD[1], TOP_LEFT_COORD[2],TOP_LEFT_COORD[3], True)
elif '3.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, TOP_RIGHT_COORD[0], TOP_RIGHT_COORD[1], TOP_RIGHT_COORD[2],TOP_RIGHT_COORD[3], True)
elif '6.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, BOTTOM_LEFT_COORD[0], BOTTOM_LEFT_COORD[1], BOTTOM_LEFT_COORD[2],BOTTOM_LEFT_COORD[3], True)
elif '8.png' in win32gui.GetWindowText(hwnd):
win32gui.MoveWindow(hwnd, BOTTOM_RIGHT_COORD[0], BOTTOM_RIGHT_COORD[1], BOTTOM_RIGHT_COORD[2],BOTTOM_RIGHT_COORD[3], True)
openCharts(folder_paths)
time.sleep(0.5)
win32gui.EnumWindows(enumHandler, None)