已解决:Solution ---------------------------------------- --------------------------
我想在Python脚本中从PHP标准库中执行函数getimagesize()
。该函数必须从Python传递图像路径。
我知道如何在Python中运行php脚本,但我无法弄清楚如何从Python传递参数 - > PHP,然后将结果返回到Python。
以下是我在Python脚本中的内容:
def php_script_runner(script_path):
p = subprocess.Popen(['php', script_path], stdout=subprocess.PIPE)
result = p.communicate()[0]
return result
这是我在PHP文件中的内容(我不知道如何将参数传递给它):
<?php getimagesize() ?>
如何将参数传递给'get_image_size.php'
并让它在Python中返回结果以进行进一步处理?
我想进一步为其他自定义PHP函数实现这个想法。这个问题的主要目标不仅是找到图像的大小,而且能够将其用于将来php强化的其他功能。
这样做的主要目的是确定:
答案 0 :(得分:3)
使用Python图像库,PIL有什么问题?
from PIL import Image
im=Image.open(filepath)
print im.size # (height,width) tuple
调用PHP脚本来获取图像尺寸,这是完全错误的。我真的不能想到PHP比Python做得更好,它可以证明启动两个运行时的实例:)
我的建议:一次坚持使用一种语言,并学习Python的标准库:) 如果你可以用PHP来做这件事,你不应该在Python中做某事。
答案 1 :(得分:2)
如果我在哪里,我将Python结果作为JSON(或可能是XML)对象回显,然后使用PHP脚本重新读取该信息。如果可能的话,我强烈建议将这两种语言分成两个单独的网页,甚至可以让Python通过GET
样式查询将数据返回到页面,即API样式。
答案 2 :(得分:2)
解决这个问题: Python:
import subprocess
import json
import sys
import os
def php(script_path, argument):
p = subprocess.Popen(['php', script_path, argument], stdout=subprocess.PIPE)
result = p.communicate()[0]
return result
image_dimensions_json =str(php("get_image_size.php", image_location_relative[1:]))
dic = json.loads(image_dimensions_json)
print str(dic["0"]) + "|" + str(dic["1"])
[1:]
的原因是由于某种原因路径中的“/”导致错误。我发现删除它解决了这个问题。
PHP:
<?php
echo(json_encode(getimagesize($argv[1])));
?>
echo
或print_r
工作。我发现将数组转换为JSON很容易,因为Python在标准库中内置了json解码器。
希望这有助于人们!我计划使用这个conecpt来实现更大的PHP函数。