用途:
1. 图片压缩,2:通过 extif 插件修复图片旋转(需要php安装extif插件)
<?php
ini_set("memory_limit","2680M");
$hostdir=dirname(__FILE__).'/uploads'; //要读取的文件夹
$filesnames = scanFile($hostdir);
$t1 = 0;
foreach ($filesnames as $name) {
if(file_exists($name)){
$i1 = filesize($name);
if($i1 > 500*1024){
$t1++;
echo $name.',size:'.getsize($i1, 'mb').'.mb,'.$i1.'<br>';
compress_image($name);
}
}
}
echo $t1;
exit;
$hostdir=dirname(__FILE__).'/Application/'; //要读取的文件夹
$filesnames = scanFile2($hostdir);
$t2 = 0;
foreach ($filesnames as $name) {
if(file_exists($name)){
$t2 = $t2+1;
}
}
if($t2 != 225) {
echo '文件数错误 :'.$t2;
}
exit;
function scanFile2($path) {
global $result2;
$files = scandir($path);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
if (is_dir($path . '/' . $file)) {
scanFile2($path . '/' . $file);
} else {
$result2[] = $path . '/' . $file;
}
}
}
return $result2;
}
function scanFile($path) {
global $result;
$files = scandir($path);
foreach ($files as $file) {
if ($file != '.' && $file != '..') {
if (is_dir($path . '/' . $file)) {
scanFile($path . '/' . $file);
} else {
$result[] = $path . '/' . $file;
}
}
}
return $result;
}
function getsize($size, $format = 'kb') {
$p = 0;
if ($format == 'kb') {
$p = 1;
} elseif ($format == 'mb') {
$p = 2;
} elseif ($format == 'gb') {
$p = 3;
}
$size /= pow(1024, $p);
return number_format($size, 3);
}
/**
* desription 进行图片压缩
* @param sting $imgsrc
* @return boolean t 是 f 否
*/
function compress_image($imgsrc)
{
if(file_exists($imgsrc)){
$i1 = filesize($imgsrc);
if($i1 > 500*1024){
compress_image2($imgsrc,$imgsrc);
}
}
}
function compress_image2($imgsrc, $imgdst)
{
$image_rate= 70;
list($width, $height, $type) = getimagesize($imgsrc);
$new_width = ($width > 1000 ? 1000 : $width) * 0.8;
$new_height = ($width > 1000 ? 1000 * $height / $width : $height) * 0.8;
switch ($type) {
case 1:
$giftype = check_gifcartoon($imgsrc);
if ($giftype) {
// header('Content-Type:image/gif');
$image_wp = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromgif($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst, $image_rate);
imagedestroy($image_wp);
}
break;
case 2:
// header('Content-Type:image/jpeg');
$image_wp = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if (file_exists($imgdst)) {
unlink($imgdst);
}
if(function_exists(exif_read_data)){
$exif = exif_read_data($imgsrc);
if (!empty($exif['Orientation'])) {
switch ($exif['Orientation']) {
case 8:
$image_wp = imagerotate($image_wp, 90, 0);
break;
case 3:
$image_wp = imagerotate($image_wp, 180, 0);
break;
case 6:
$image_wp = imagerotate($image_wp, -90, 0);
break;
}
}
}
imagejpeg($image_wp, $imgdst, $image_rate);
imagedestroy($image_wp);
break;
case 3:
// header('Content-Type:image/png');
$image_wp = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefrompng($imgsrc);
imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_wp, $imgdst, $image_rate);
imagedestroy($image_wp);
break;
}
}
/**
* desription 判断是否gif动画
* @param sting $image_file图片路径
* @return boolean t 是 f 否
*/
function check_gifcartoon($image_file){
$fp = fopen($image_file,'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true;
}
?>