Новичку нужен совет для скрипта, который получает данные и возвращает их в удобном для использования формате - PullRequest
0 голосов
/ 29 августа 2009

У меня есть большое количество изображений, которые я помещаю на веб-страницы. Вместо того, чтобы тщательно вводить все атрибуты изображения, я подумал, что смогу написать сценарий, который сделает всю работу за меня. Мне просто нужно немного подтолкнуть в правильном направлении.

Я хочу, чтобы скрипт получил ширину и высоту каждого изображения, затем отформатировал его в тег img, который включал бы URL, который я использую. Я думаю, что сначала я бы перебрал файлы в каталоге и вывел результаты, которые я ищу, в файл. Тогда я могу скопировать и вставить.

В идеале, он должен в конечном итоге иметь графический интерфейс, в котором вы можете выбрать каждый файл, сохранить результат в буфер обмена, а затем вставить его прямо в документ. Но я считаю, что на данный момент это за мной.

Я имею базовое понимание кодирования и немного разбираюсь в скриптах на Python и PHP.

С чего мне начать? Могу ли я использовать Python? Или PHP? Или другой язык? В PHP есть функция getimagesize (), которая возвращает нужные мне данные. Имеет ли Python аналогичную функцию?

Извините, что долго выдохся И спасибо за любой вклад.

Ответы [ 4 ]

3 голосов
/ 29 августа 2009

Проверьте PIL :

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

Для просмотра циклов файлов см. это руководство .

1 голос
/ 29 августа 2009

Возможно, лучшим решением было бы не создание сценария, который генерирует список всех элементов изображения, который вы хотите вставить в документ, а создание элементов изображения на лету в нужном документе. Это можно сделать так:

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

0 голосов
/ 29 августа 2009

Я думаю, что это должно делать то, что вы хотите. Но это не обязательно лучший способ (уже поздно, я устал и т. Д.):

<?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] . "\" />";
    }
  }

?>
0 голосов
/ 29 августа 2009

Вы также можете использовать оболочку определить команду от Imagemagick :

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