実現したいこと
下記【前提】にて[B]の画像を200KB以下且つ、1280*512に出来る限り近くなる様にリサイズを行いたいです。
前提
現状のPHPソースにて
[A]孫フォルダに入っているものが画像かそうでないかの振分け
[B]画像であった場合、200KB以上かどうかで振分け
を行い、[A][B]を分けて出力するコードを組んでいます。
(併せてBの部分には縦横のサイズも表示できる様にしております。)
該当のソースコード
PHP8.0
1<?php 2$directory = './image/*/'; 3 4$list = glob($directory . '*', ); 5natsort($list); 6 7$imgArray = []; 8$notImgArray = []; 9 10function get_image_size($file){ 11 $size = [0, 0]; 12 if(file_exists($file)){ 13 $size = getimagesize($file); 14 if($size){ 15 $size = [$size[3]]; 16 } 17 } 18 return $size; 19} 20 21foreach ($list as $directory1) { 22 23 $arrayPass = ''; 24 $notArrayPass = ''; 25 $fileSizePass = ''; 26 $arrayPassSize = ''; 27 28 if(exif_imagetype($directory1)){ 29 $arrayPass = $directory1; 30 $arrayPass2 = get_image_size($arrayPass); 31 $fileSizePass = filesize($arrayPass); 32 if ($fileSizePass > 204800){ 33 $arrayPassSize = ".....Size: ".($fileSizePass / '1024' . "KB" ) . "<br />"; 34 }else{ 35 $arrayPass = ''; 36 $arrayPass2 = ''; 37 } 38 }else{ 39 $notArrayPass = $directory1.".....Not Image File" . "<br />"; 40 } 41 42 array_push($imgArray , $arrayPass , $arrayPass2 , $arrayPassSize); 43 array_push($notImgArray , $notArrayPass); 44} 45 46foreach ($imgArray as $arrayImage){ 47 print_r($arrayImage); 48} 49 50foreach ($notImgArray as $arrayNotImage){ 51 print_r($arrayNotImage); 52} 53 54?> 55 56
0 コメント