繁体   English   中英

使用 Python 和 PHP 将图像发布到剪贴板的问题

[英]Problem posting image to clipboard using Python and PHP

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

我找到了一个如何将图像复制到 Windows 剪贴板的示例。 如果我在 cmd.exe 级别运行该程序,它就会工作,并且我可以从剪贴板粘贴复制的图像。 如果我使用 exec(program to run) 从 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");
?>

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM