寻找一种简单的方法将图像目录的大小调整为给定的设置宽度和高度。
有没有人知道在php或javascript中执行此操作的简单方法?我有一个包含大约100张图像的目录,在photoshop中这样做效率非常低。
由于
答案 0 :(得分:2)
我会使用shell脚本。这对你有用吗?如果是这样,你可以这样做。
for i in *.jpg
do
convert $i -scale 50% $(basename $i .jpg)-scaled.jpg
done
convert
计划是ImageMagick的一部分。
答案 1 :(得分:2)
如果您的系统上安装了ImageMagick,您可以尝试mogrify命令:
<?php
chdir( 'dir/with/images' );
//using backticks to run system command
`mogrify -format png -resize 256x256 *.jpg`;
答案 2 :(得分:0)
循环遍历目录,在循环中使用:
$img= new Imagick($srcpath);
$img->resizeImage($width,$height,Imagick::FILTER_BOX,1,true);
答案 3 :(得分:0)
根据(最小宽度+比率)+子目录
调整图像大小<?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";
}
}
?>