新手需要有关获取数据并以可用格式返回数据的脚本的建议

时间:2009-08-28 23:49:50

标签: php python scripting image-processing web

我将大量图片放入网页。而不是苦心地输入所有的图像属性,我想我可以编写一个脚本来为我做这项工作。我只需要朝着正确的方向努力。

我希望脚本获取每个图像的宽度和高度,然后将其格式化为img标记,其中包含我正在使用的url。我想首先我会遍历目录中的文件并将我正在寻找的结果输出到文件中。然后我可以复制和粘贴。

理想情况下,它最终应该有一个GUI,您可以在其中选择每个文件,将结果保存到剪贴板,然后将其直接粘贴到文档中。但我相信这在我看来已经超出了我的范围。

我对编码有基本的了解,并在Python和PHP中完成了一些脚本。

我从哪里开始?我可以使用Python吗?还是PHP?还是另外一种语言? PHP有getimagesize()函数,它返回我需要的数据。 Python有类似的功能吗?

很抱歉长篇大论。感谢任何意见。

4 个答案:

答案 0 :(得分:3)

查看PIL

from PIL import Image
im = Image.open("yourfile.jpg")
print im.size

要循环浏览文件,请参阅this tutorial

答案 1 :(得分:1)

也许更好的解决方案不是创建一个脚本来生成所有图像元素的列表,以便放入文档中,而是在所需文档中动态生成图像元素。这可以这样做:

if ($handle = opendir('/path/to/images')) {
    while (false !== ($file = readdir($handle))) {
        ?>
        <img src="http://you.server.com/path/to/images/<?php echo $file ?>" alt="<?php echo $file ?>" />
        <?php
    }
    closedir($handle);
}

此外,我不明白你为什么要在img元素中包含图像高度和宽度,因为不需要指定它们。高度和宽度仅用于修改图像尺寸,因为浏览器会自动显示实际尺寸。

但要包含图像大小,getimagesize()函数将起作用:

if ($handle = opendir('/path/to/images')) {
    while (false !== ($file = readdir($handle))) {
        $size=getimagesize('/path/to/images/'.$file);
        ?>
        <img <?php echo $size[3] ?> src="http://you.server.com/path/to/images/<?php echo $file ?>" alt="<?php echo $file ?>" />
        <?php
    }
    closedir($handle);
}

更多信息:http://nl2.php.net/function.getimagesize

答案 2 :(得分:0)

您还可以使用identify中的shell Imagemagick命令:

for file in dir/*; do
  identify -format "Width: %w, Height: %h" $file
done

答案 3 :(得分:0)

我认为这应该做你想要的。但它不一定是最好的方式(已经晚了,我累了,等等......):

<?php

$directory = "img"; // The path in which your images are located.

if ($directory) {
$files = scandir($directory); // $files becomes an array of files in the relevant directory.
}

foreach($files as $k => $v) {
  if ($v == "." || $v == "..") {
    // because I'm not good enough to think of a better way
    unset($k);
  }
  else {
    $size = getimagesize($directory . "/" . $v);
    $images[] = array('img' => $v, 'w' => $size[0], 'h' => $size[1]); // $size[0] is width, $size[1] is height, both in px.
  }
}

unset($files); // I just like to clear as I go. I make more than enough mess as it is without keeping it around.

  if ($images) {
    foreach($images as $key => $value) {
      echo "\n\t\t<img src=\"$directory/" . $value[img] . "\" width=\"" . $value[w] . "px\" height=\"" . $value[h] . "px\" alt=\"" . $value[img] . "\" />";
    }
  }

?>