Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Flask库是否没办法使用这个工具呢? #254

Closed
sgajs opened this issue May 23, 2023 · 3 comments
Closed

Flask库是否没办法使用这个工具呢? #254

sgajs opened this issue May 23, 2023 · 3 comments

Comments

@sgajs
Copy link

sgajs commented May 23, 2023

我试着用Flask构建网页窗口,并通过按钮经photoshop-python-api操控Photoshop。但用按钮操控时报错:photoshop.api.errors.PhotoshopPythonAPIError: Please check if you have Photoshop installed correctly.

不用flask构建的网页按钮则可以正常使用photoshop-python-api操控Photoshop。
以下是我的代码:
python:
from flask import Flask
from photoshop import Session
app = Flask(name)
@app.route('/tryButton', methods=['GET','POST'])
def tryButton():
with Session(r"C:\Users\out.psd", action="open") as app:
doc = app.active_document
if name == "main":
app.run(debug=True, host="0.0.0.0",port=5000)
return "File uploaded successfully"

Js:
tryButton.addEventListener('click', function() {
fetch('/tryButton', {
method: 'GET',
}).then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.blob();
}).then(blob => {

    }).catch(error => {
        console.error('Error:', error);
    });
});

HTML:


是否是flask的多线程造成的?请问有什么好的解决办法吗?

@sgajs sgajs changed the title Flask库中是否没法使用这个工具呢 Flask库是否没办法使用这个工具呢? May 23, 2023
@loonghao
Copy link
Owner

应该是可以的你可以参考这个
#161

@sgajs
Copy link
Author

sgajs commented May 24, 2023

我试了下手动打开Photoshop再运行,还是不行,这是我的测试代码,大佬能帮我看下吗?

from flask import Flask
import photoshop.api as ps

app = Flask(__name__)
path=r"F:\lxzj.psd"

@app.route('/',methods=['GET'])
def index():
    a()
    return ''

def a():
    psapp=ps.Application()
    psapp.Open(path)
    psApp = psapp.Application.ActiveDocument

if __name__ == '__main__':
    app.run(debug=True)

我运行后进入http:https://127.0.0.1:5000
会报错:
1
2

@sgajs
Copy link
Author

sgajs commented May 24, 2023

解决了,似乎因为flask是多线程的,使用pypsAPI时需要创建COM对象,为避免线程冲突和资源争夺,需要在使用前初始化一下com环境。直接运行好像因为python会自动回收处理COM环境而不受影响?修改代码如下:

from flask import Flask
import photoshop.api as ps
import pythoncom

app = Flask(__name__)
path=r"F:\try\lxzj.psd"

# @app.route('/',methods=['GET'])
@app.route('/')
def index():
    try:
        pythoncom.CoInitialize() #初始化com环境
        a()
    finally:
        pythoncom.CoUninitialize() #清理com环境
    return ''

def a():
    psapp=ps.Application()
    psapp.Open(path)
    psApp = psapp.Application.ActiveDocument

if __name__ == '__main__':
    # a()
    app.run(debug=True)

这样就可以正常运行了

@sgajs sgajs closed this as completed May 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants