使用 Pyautogui 的 Python 程序在 Photoshop 上不起作用

问题描述

我正在使用 pyautogui 在 python 中创建一个程序,该程序将自动化我创建 PNG 的过程,以便我以后可以将它们转换为 ICO 文件。目标是将文件转储到一个文件夹中,转换后将它们保存在另一个文件夹中。这个过程还没有完成,但对我的问题来说并不重要。我会通过我的代码。它有符号,所以如果你知道 photoshop 你就会明白我在做什么。在代码之后,我会提供更多信息并说明有什么问题

import pyautogui as pg
from time import sleep
from PIL import Image
from PIL.ExifTags import TAGS



def resolution(image):                                                          #this will select an image as an argument using its directory and find the dimensions of it
    imagem = Image.open(image)
    exif ={TAGS[k]:v for k,v in imagem._getexif().items() if k in TAGS}
    return (exif["ExifImageWidth"],exif["ExifImageHeight"])

i = """C:\\Users\PriestMarmore\Desktop\Photoshop\Originais\Azeite.jpg"""        #this is the image introduced manually. later on it will be through a function
sleep(10)                                                                       #time to go to photoshop and make sure everything is ok

pg.click(2000,300)                                                              #random click on the middle of photoshop to make sure PS is the main app being used

#Archive -> New
w = resolution(i)[0]                                                            #attributes to w the value of the image width
h = resolution(i)[1]                                                            #attributes to h the value of the image height

if w > h:
    size = w
else:                                                                           #this 4 lines will select the highest value between w and h to later create a transparent squared layer with the highest value dimension
    size = h
    
pg.hotkey("ctrl","n")                                                           #creates new file/layer
pg.typewrite(["shift","shift"])                                                 #goes to the width input area
pg.typewrite(str(size))                                                         #writes the dimensions of the squared layer,determined above
pg.typewrite(["shift","shift"])                                                 #goes to the height input area
pg.typewrite(str(size))                                                         #same as above
pg.typewrite(["shift","shift","enter"])#clicks on OK.

#Archive -> Open
pg.hotkey("ctrl","o")                                                           #opens a file
pg.doubleClick(547,188)                                                         #select the first image of the selected folder. the folder is always on the same position and on the same directory

#copy Layer
pg.rightClick(2388,855)                                                         #opens menu of layer
pg.click(2388,169)                                                              #selects to duplicate layer
pg.typewrite(["tab","up","enter"])                                              #opens menu of directory and then selects the first layer on photoshop,which is the squared transparent layer. finally confirms it
pg.hotkey("ctrl","w")                                                           #closes the selected image,only lefting the transparesnt squared layer with the image we selected as a second layer

#Select Layers
pg.move(50,92)                                                                  #clicks on the top-left part of PS
pg.drag(2179,1149)                                                              #Corresponds to a vector where it will always fully select the transparent squared layer
pg.hotkey("ctrl","<")                                                           #this is a shortcut that will center the image on the vertical
pg.hotkey("ctrl","<")                                                   #same as above but horizontaly
pg.hotkey("ctrl","s")                                                   #opens "save" menu
pg.write("Azeite")                                                              #This will have the name of the original file but I haven't done that yet so I putted a manual one
pg.click(690,888)                                                               #Clicks on the format list
pg.click(690,1116)                                                              #Selects PNG
pg.typewrite(["enter","enter"])                                                 #Double enter in order to confirm
sleep(30)                                                                       #Big images take around 20 seconds to be saved so this will create more than that time since I can create a way to see when it is finished
pg.hotkey("ctrl","w")                                                           #Closes the file
pg.typewrite(["right"])                                                         #A pop-up appeared asking if I wanna save the changes. This selects no
pg.typewrite(["enter"])                                                         #Confirms the prevIoUs step and closes the file/layer,leaving nothing open and being ready for other files

事实上,这至少应该能够创建这些平方 PNG 中的一个,但是,当最小化我的编译器并打开我的 photoshop 时,什么也没有发生。我知道该程序有效,因为当我在最初的 10 秒内没有关闭编译器时,我的鼠标开始移动并创建新文件并写入内容(因为我的编译器也使用与 PS 相同的快捷方式)。为什么它在打开PS时不起作用? 如果有人知道我也想知道为什么函数分辨率不支持PNG文件 以防我所说的令人困惑,我在这里上传了 3 张有我的目标的图片一个中间过程截图。我知道这对程序来说有点过于“个人化”,因为没有更好的词,而且它可能会令人困惑,所以如果有人有任何疑问或我犯了任何错误,请告诉我

照片:https://imgur.com/a/6DWXcYu

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)