前提・実現したいこと
vmwareのApacheでPythonを使ってCGI作成しています。
実現したいことは画像をアップロードすると、処理された画像が表示されることです。
画像処理のプログラムを作成しようとしていますが、cgiファイルでエラーが起きました。
初めてpythonでのCGI作成なのでわかりやすく教えていただければ幸いです。
発生している問題・エラーメッセージ
エラーメッセージ Traceback (most recent call last): File "/var/www/cgi-bin/index.cgi", line 20, in <module> image.save("org.png") File "/usr/lib64/python3.8/site-packages/PIL/Image.py", line 2099, in save fp = builtins.open(filename, "w+b") PermissionError: [Errno 13] Permission denied: 'org.png'
該当のソースコード
python
1#!/usr/bin/env python3 2import cgi 3import cgitb 4cgitb.enable() 5 6print("Content-Type: text/html; charset=utf-8") 7print("") 8 9form = cgi.FieldStorage() 10 11if "imagefile" in form: 12 fileitem = form["imagefile"] 13 if fileitem.file: 14 from PIL import Image 15 16 image = Image.open(fileitem.file) 17 18 image.save("org.png") 19 image.convert("1").save("1_1-bit-pixels.png") 20 image.convert("L").save("L_8-bit-grayscale.png") 21 image.convert("P").save("P_8-bit-colors.png") 22 23 print("<h1>オリジナル</h1>") 24 print("<img src=\"../org.png\" width=\"350\">") 25 print("<h1>画像モード変換後</h1>") 26 print("<table>") 27 print(" <tr><td>1_1-bit-pixels.png<br />") 28 print(" <img src=\"../1_1-bit-pixels.png\" width=\"350\"></td>") 29 print(" <td>L_8-bit-grayscale.png<br />") 30 print(" <img src=\"../L_8-bit-grayscale.png\" width=\"350\"></td>") 31 print(" <td>P_8-bit-colors.png<br />") 32 print(" <img src=\"../P_8-bit-colors.png\" width=\"350\"></td></tr>")
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー