Acemi verileri alır ve kullanılabilir bir biçimde döndürür komut için tavsiye ihtiyacı

4 Cevap php

Ben web sayfaları içine koyarak duyuyorum görüntüleri çok sayıda var. Özenle görüntü tüm niteliklerini girmek yerine, ben benim için çalışma yapacağını bir senaryo yazmak düşündüm. Ben sadece doğru yönde küçük bir itme gerekir.

Ben komut her görüntünün genişliğini ve yüksekliğini almak istiyorum, sonra ben kullanıyorum url içerecek bir img etiketi içine bu biçimlendirmek. Ben dizin ve çıkışı bir dosyaya arıyorum sonuçlar, dosyaları aracılığıyla bu ilk isterim döngü düşünüyorum. Sonra kopyalama ve yapıştırma yapabilirsiniz.

İdeal olarak, sonunda, her bir dosyayı seçebileceğiniz bir GUI panoya sonucu kaydetmek, daha sonra doğrudan belgeye yapıştırın gerekir. Ama bu noktada bana ötesinde olduğuna inanıyorum.

Ben kodlama temel bir anlayış var ve Python ve PHP komut çat pat yaptım.

Nerede başlar? Python kullanabilir miyim? Veya PHP? Ya da farklı bir dil? PHP ihtiyacım verileri döndürür getimagesize () işlevi vardır. Python benzer bir işlevi var mı?

Uzun soluklu olması için üzgünüm. Ve herhangi bir giriş için teşekkürler.

4 Cevap

Çıkış PIL:

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

Dosyaları döngü için bkz this tutorial.

Belki daha iyi bir çözüm istenen belgede anında görüntü öğelerini belgede koymak değil, üretmek için tüm görüntü öğelerinin bir listesini oluşturan bir komut dosyası oluşturmak için değil olurdu. Bu, böyle yapılabilir:

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);
}

Bu belirtmek için gerek yoktur gibi img öğelerinin görüntü yüksekliğini ve genişliğini eklemek istediğiniz neden Ayrıca ben anlamıyorum. Yüksekliği ve genişliği sadece tarayıcı otomatik olarak gerçek boyutu ekran olarak görüntü boyutlarını değiştirmek için kullanılır.

Ancak görüntü boyutunu içerecek getimagesize () fonksiyonu çalışacak:

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);
}

Daha fazla bilgi: http://nl2.php.net/function.getimagesize

Ayrıca kabuk dan identify komutunu kullanabilirsiniz Imagemagick:

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

Ben bu istediğini yapması gerektiğini düşünüyorum. Ama (o .. ben vs, yorgunum, geç) mutlaka iyi yolu bu değil:

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

?>