2011-04-27 36 views
1

尋找一種簡單的方法將圖像目錄的大小調整爲給定的寬度和高度。簡單的調整圖像大小的方法

有誰知道一個簡單的方法來做到這一點在PHP或JavaScript?我有一個包含大約100張圖片的目錄,在photoshop中做這個工作將會非常低效。

謝謝

+2

查看imagecopyresampled @ http://us3.php.net/manual/en/function.imagecopyresampled.php 您也可以在Photoshop中設置批處理操作。 – circusbred 2011-04-27 13:57:27

+0

你能告訴我如何在PS中設置批處理動作嗎?我發現了PHP的這個教程:http://www.webmastersucks.com/resizing-all-images-in-directory/,但我沒有在源代碼中看到指定寬度和高度的地方。該鏈接上的這段代碼是否指定了寬度和高度? '$ image-> resize(80,60);' – Jshee 2011-04-27 14:01:10

+1

替代函數http://www.php.net/manual/en/function.imagick-resizeimage.php @ user700070是 - 對於函數imagecopyresampled需要給出參數和dst_w意味着寬度,dst_h意味着高度。您需要閱讀文檔並查看示例以充分了解其工作原理。 – xeranas 2011-04-27 14:06:30

回答

2

我會用這個shell腳本。這對你有用嗎?如果是這樣,你可以做到這一點。

for i in *.jpg 
do 
convert $i -scale 50% $(basename $i .jpg)-scaled.jpg 
done 

convert程序是ImageMagick一部分。

2

如果您的系統上安裝的ImageMagick你可以嘗試mogrify命令:

<?php 
chdir('dir/with/images'); 
//using backticks to run system command 
`mogrify -format png -resize 256x256 *.jpg`; 
0

在(min-width +定量)+子目錄下調整圖像大小

<?php 
ini_set('max_execution_time', 0); 
listFolderFiles('assets'); 
ini_set('memory_limit', '-1'); 

function listFolderFiles($dir){ 
    $Allow = array('image/jpeg','image/png'); 
    $Quality = 80; 
    $MaxAllowedWidth = 1200; 

    $ffs = scandir($dir); 
    foreach($ffs as $ff){ 
     if($ff != '.' && $ff != '..'){ 
      $what = $dir.'/'.$ff; 
      if ($mime = mime_content_type($what)) { 
       if (in_array($mime, $Allow)) { 
        $siz = getimagesize($what); 
        echo $what ." \n" . $mime. " - " . $siz[0] . 'x'. $siz[1]; 
        echo "\n\n"; 
        if ($MaxAllowedWidth <= $siz[0]) { 
         resizeitbyration($MaxAllowedWidth-1, $what, $Quality,$mime); 
         echo 'Ujebac' . "\n"; 
        } 
       } 
      } 
      if ($mime == 'directory') listFolderFiles($what); 
     } 
    } 
} 

function resizeitbyration($newwidth, $source,$Quality, $mime) { 
    $org = getimagesize($source); 

    $ratio = $newwidth/$org[0]; 
    $newheight = $org[1] * $ratio; 
    if ($mime == 'image/png') $from = imagecreatefrompng($source); 
    else $from = imagecreatefromjpeg($source); 

    $new_image = imagecreatetruecolor($newwidth, $newheight); 
    try { 
    imagecopyresampled($new_image, $from, 0, 0, 0, 0, $newwidth, $newheight, $org[0], $org[1]); 

    if ($mime == 'image/png') imagepng($new_image, $source); 
    else imagejpeg($new_image, $source, $Quality); 
    } catch (Exception $e) { 
     echo 'Caught exception: ', $e->getMessage(), "\n"; 
    } 
} 
?>