現在の言語: 日本語 |
imagepng / imagejpeg |
画像関連 |
$kind = 1;//0;//[0]png [1]jpg
$input_dir = "./img/";//変換元となる画像フォルダパス
$output_dir = "./img/out/";//変換先に出力する画像フォルダパス
$imageSize = 300;//px単位
//画像リサイズ変換処理
resizeImageCreateFromPngOrJpeg($kind, $input_dir, $output_dir, $imageSize);
//画像リサイズ変換処理
//kind:[0]png [1]jpg
//input_dir:変換元となる画像フォルダパス
//output_dir:変換先に出力する画像フォルダパス
//imageSize:px単位
function resizeImageCreateFromPngOrJpeg(int $kind, string $input_dir, string $output_dir, int $imageSize)
{
$all_files = scandir($input_dir);
$files = [];
//指定したフォルダの画像ファイルID(拡張子がpngもしくはjpg)を取得する処理
imageDir($kind, $input_dir, $files);
if(count($files)==0)
{
echo "対象ファイルが存在しません。\n";
return;
}
// 保存先フォルダがなければ作成する
if (!is_dir($output_dir))
{
mkdir($output_dir, 0755, true);
}
//画像サイズ変更
resizeImage($kind, $input_dir, $output_dir, $imageSize, $files);
}
//画像サイズ変更
function resizeImage(int $kind, string $input_dir, string $output_dir, int $imageSize, array &$files)
{
$src_image = null;
foreach ($files as $file)
{
echo "file:$file\n";
if(!file_exists($input_dir . $file))
{
echo "ファイルは存在しないので次のファイルを判定します。\n";
continue;
}
$image_into = getimagesize($input_dir . $file);
if($image_into === false)
{
if(($kind == 0 && $image_into[2] !== IMAGETYPE_PNG) ||
($kind == 1 && $image_into[2] !== IMAGETYPE_JPEG)
)
{
echo "画像情報が誤っています。\n";
continue;
}
}
// 1. 画像をメモリに読み込む
if($kind == 0)
{
$src_image = imagecreatefrompng($input_dir . $file);
}
else
{
$src_image = imagecreatefromjpeg($input_dir . $file);
}
if (!$src_image) continue;
// 2. リサイズ(例:幅300pxに固定し、比率は維持)
$resized_image = imagescale($src_image, $imageSize);
// 3. ファイル名を取得(元のファイル名と同じ名前で保存するため)
$filename = basename($input_dir . $file);
$save_path = $output_dir . $filename;
// 4. 指定したフォルダに直接保存
// imagepngの第2引数にパスを渡すと、ファイルとして書き出されます
if($kind == 0)
{
//透過(アルファチャンネル)を維持したい場合
//imagescale は基本的には透過を維持しますが、
//より確実に透過設定を保持して保存したい場合は、保存前に以下の設定を入れるのが一般的です。
//保存の直前に透過設定を維持する処理
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagepng($resized_image, $save_path);
}
else
{
imagejpeg($resized_image, $save_path);
}
// 5. メモリ解放
imagedestroy($src_image);
imagedestroy($resized_image);
echo "保存完了: " . $save_path . "\n";
}
}
//指定したフォルダの画像ファイルID(拡張子がpngもしくはjpg)を取得する処理
//kind:[0]png [1]jpg
//input_dir:指定するフォルダパス
//files:取得したファイルIDの結果を格納する配列
function imageDir(int $kind, string $input_dir, array &$files)
{
$all_files = scandir($input_dir);
$files = [];
$flg=0;
foreach ($all_files as $file)
{
$flg=0;
if($kind==0)
{
// '/i' 修飾子をつけることで大文字小文字を区別せずに検索
if (preg_match('/\.png$/i', $file))
{
$flg=1;
}
}
else
{
//最も一般的な書き方(OR演算子)
// (jpg|jpeg) で「jpg」または「jpeg」にマッチ
//if (preg_match('/\.(jpg|jpeg)$/i', $file))
//短く書く方法(量指定子 ?)
// jpe?g で「jpg」と「jpeg」の両方にマッチ
if (preg_match('/\.jpe?g$/i', $file))
{
$flg=1;
}
}
if($flg==0)continue;
$files[] = $file;
}
}
$kind = 1; //0; //[0]png [1]jpg
$input_dir = "./img/"; //Source image folder path
$output_dir = "./img/out/"; //Destination image folder path
$imageSize = 300; //Pixel units
//Image resizing process
resizeImageCreateFromPngOrJpeg($kind, $input_dir, $output_dir, $imageSize);
//Image resizing process
//kind:[0]png [1]jpg
//input_dir:Source image folder path
//output_dir:Destination image folder path
//imageSize:Pixel units
function resizeImageCreateFromPngOrJpeg(int $kind, string $input_dir, string $output_dir, int $imageSize)
{
$all_files = scandir($input_dir);
$files = [];
//Get image file IDs (with extensions .png or .jpg) in the specified folder
imageDir($kind, $input_dir, $files);
if(count($files)==0)
{
echo "The target file does not exist.\n";
return;
}
//Create the destination folder if it does not exist
if (!is_dir($output_dir))
{
mkdir($output_dir, 0755, true);
}
//Resize the image
resizeImage($kind, $input_dir, $output_dir, $imageSize, $files);
}
//Resize the image
function resizeImage(int $kind, string $input_dir, string $output_dir, int $imageSize, array &$files)
{
$src_image = null;
foreach ($files as $file)
{
echo "file:$file\n";
if(!file_exists($input_dir . $file))
{
echo "The file does not exist, so try the next file.\n";
continue;
}
$image_into = getimagesize($input_dir . $file);
if($image_into === false)
{
if(($kind == 0 && $image_into[2] !== IMAGETYPE_PNG) ||
($kind == 1 && $image_into[2] !== IMAGETYPE_JPEG)
)
{
echo "The image information is incorrect.\n";
continue;
}
}
// 1. Load the image into memory.
if($kind == 0)
{
$src_image = imagecreatefrompng($input_dir . $file);
}
else
{
$src_image = imagecreatefromjpeg($input_dir . $file);
}
if (!$src_image) continue;
// 2. Resize (e.g., fix width to 300px, maintain aspect ratio)
$resized_image = imagescale($src_image, $imageSize);
// 3. Get filename (to save with the same name as the original)
$filename = basename($input_dir . $file);
$save_path = $output_dir . $filename;
// 4. Save directly to a specified folder
// Pass a path as the second argument to imagepng to write the file.
if($kind == 0)
{
// If you want to preserve transparency (alpha channel)
// imagescale generally preserves transparency,
// To more reliably preserve transparency settings when saving, it's common to set the following before saving.
// Maintain transparency settings immediately before saving.
imagealphablending($resized_image, false);
imagesavealpha($resized_image, true);
imagepng($resized_image, $save_path);
}
else
{
imagejpeg($resized_image, $save_path);
}
// 5. Free memory.
imagedestroy($src_image);
imagedestroy($resized_image);
echo "Saving completed: " . $save_path . "\n";
}
}
// Obtain image file IDs (with extensions .png or .jpg) in the specified folder.
//kind:[0]png [1]jpg
//input_dir: Folder path to be specified.
//files: Array to store the obtained file IDs.
function imageDir(int $kind, string $input_dir, array &$files)
{
$all_files = scandir($input_dir);
$files = [];
$flg=0;
foreach ($all_files as $file)
{
$flg=0;
if($kind==0)
{
// Use the '/i' modifier to perform a case-insensitive search.
if (preg_match('/\.png$/i', $file))
{
$flg=1;
}
}
else
{
// Most common syntax (OR operator)
// (jpg|jpeg) matches "jpg" or "jpeg"
//if (preg_match('/\.(jpg|jpeg)$/i', $file))
// Shorter syntax (quantifier ?)
// jpe?g matches both "jpg" and "jpeg"
if (preg_match('/\.jpe?g$/i', $file))
{
$flg=1;
}
}
if($flg==0)continue;
$files[] = $file;
}
}
| 著作権情報 |
| ホームページおよびアプリ等に掲載されている情報等については、いかなる保障もいたしません。 ホームページおよびアプリ等を通じて入手したいかなる情報も複製、販売、出版または使用させたり、 または公開したりすることはできません。 当方は、ホームページおよびアプリ等を利用したいかなる理由によっての障害等が発生しても、 その結果ホームページおよびアプリ等を利用された本人または他の第三者が被った損害について 一切の責任を負わないものとします。 |