首页 > 解决方案 > 使用 Python 和 PHP 将图像发布到剪贴板时出现问题

问题描述

大家好(我的第一篇文章)。请温柔一点!我正在运行 Windows 10 版本 10.0.18363 Build 18363。Python 3.8.5 Apache 2.4.41

我找到了一个如何将图像复制到 Windows 剪贴板的示例。如果我在 cmd.exe 级别运行程序,它可以工作,并且我可以从剪贴板粘贴复制的图像。如果我使用 exec(要运行的程序)从 PHP 脚本(这是必需的)中执行相同的程序,它运行时不会出现任何错误。但是图像不在剪贴板中。我尝试创建一个 .bat 文件,然后使用 PHP exec(.bat 文件),没有任何内容被复制到剪贴板。在 cmd.exe 级别运行时,.bat 文件再次成功运行。我已经在 cmd.exe 级别运行 whoami 并且正确的用户(即我自己作为管理员)显示 noellaptop\rorke 除了使用 .bat 文件,我还尝试了 exec(使用 python 的路径和要运行的 python 脚本) . 任何建议或帮助将不胜感激,因为我不是经验丰富的 Python 程序员。

下面的代码是Python 脚本

#!c:/users/rorke/appdata/local/programs/python/python38/python.exe
 
from io import BytesIO
import win32clipboard
from PIL import Image
import cgi, cgitb 
 
print ("Content-type:text/html\r\n\r\n")
 
# Create instance of FieldStorage 
#form = cgi.FieldStorage() 
#filepath = form.getvalue('image_url')
filepath = "C:/wamp64/www/PhotoApp2.0/favicon.ico"
#print(filepath)
 
def send_to_clipboard(clip_type, data):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardData(clip_type, data)
    win32clipboard.CloseClipboard()
    print("Done!")
 
image = Image.open(filepath)
output = BytesIO()
image.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]
output.close()
 
send_to_clipboard(win32clipboard.CF_DIB, data)

下面的代码是PHP 脚本

<?php
    $bat_filename = "aaCopyImage.bat";
    $bat_log_filename = "aaCopyImage_bat.log";
    $bat_file = fopen($bat_filename, "w");
    if($bat_file) {
        fwrite($bat_file, "@echo off"."\n");
        fwrite($bat_file, "echo Starting process >> ".$bat_log_filename."\n");
        fwrite($bat_file, "C:/Users/rorke/AppData/Local/Programs/Python/Python38/python.exe c:/wamp64/www/cgi-bin/hpCopyText.py >> ".$bat_log_filename."\n");
        fwrite($bat_file, "echo End proces >> ".$bat_log_filename."\n");
        fwrite($bat_file, "EXIT"."\n");
        fclose($bat_file);
    }
    exec("aaCopyImage.bat");
?>

标签: pythonphp

解决方案


将图像从文件复制到剪贴板的简单方法。我不确定这是否能回答 Ops 问题,但因为我只是找到了下面描述的方法,所以我想我会分享它。我使用的是最新的 Windows 10。我不知道要进行任何更改以使其正常工作。我没有彻底测试过 - 使用风险自负!

  • 在 Windows 资源管理器中右键单击图像文件(我在 jpg 文件上执行此操作)
  • 这会调出上下文菜单 > 选择/悬停在“发送至”上
  • 这会弹出一个“子”上下文菜单
  • 我的子上下文菜单顶部附近是“剪贴板(作为内容)”>选择它
  • 这将 jpg 文件中的图像复制到我的剪贴板
  • 我将剪贴板复制到所需的应用程序作为设备独立位图(Word)
  • 它工作得很好。

我希望这对你们中的一些人有所帮助。向前传递。最好的祝愿。


推荐阅读