2

已解决:解决方案---------------------------------------------------------- ------------------

我想getimagesize()在 Python 脚本中执行 PHP 标准库中的函数。该函数必须从 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 密集型功能。

其主要目标是确定:

  1. 如何在 Python 中调用 PHP 脚本
  2. 如何从 Python 将 agrument 发送到 PHP 脚本
  3. 如何将 PHP 脚本的输出解析回 Python
4

3 回答 3

3

使用 Python 图像库 PIL 有什么问题?

from PIL import Image
im=Image.open(filepath)
print im.size # (height,width) tuple

调用 PHP 脚本来获取图像尺寸是完全错误的。我真的想不出 PHP 比 Python 做得更好的任何事情,它证明了启动两个运行时的实例是合理的 :)

我的建议:一次坚持使用一种语言,并学习 Python 的标准库 :) 如果你可以在 PHP 中做某事,那么在 Python 中做某​​事应该不会有问题。

于 2013-03-06T16:26:52.650 回答
3

通过这样做解决: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])));

?>

echoprint_r工作。我发现将数组转换为 JSON 很容易,因为 Python 在标准库中内置了一个 json 解码器。

希望这对人们有所帮助!我计划使用这个 conecpt 来实现更大的 PHP 函数。

于 2013-03-06T17:58:43.753 回答
2

如果我在你的位置,我会将 Python 结果作为 JSON(或可能的 XML)对象回显,然后使用 PHP 脚本重新读取该信息。如果可能的话,我强烈建议将这两种语言分成两个单独的网页,甚至可能让 Python 通过GET样式查询将数据返回到页面,也就是 API 样式。

于 2013-03-06T15:47:39.130 回答