サーバーサイドでの画像処理は、ImageMagick を使ってましたが、脆弱性があり、使用回避することになり、PHP GD の利用に置換予定です。
[ ImageMagick 脆弱性情報 ]
https://www.mbsd.jp/blog/20180831.html
https://qiita.com/yoya/items/2076c1f5137d4041e3aa
https://blog.cybozu.io/entry/2018/08/21/080000[
[ 準備 ]
CentOS7の yum でインストールした7系では、何もしなくても GDライブラリが使えます。
Windows の場合、php.ini に以下の記述を追加して有効化します。
[PHP_GD2] extension=php_gd2.dll
[ コード例 ]
<?php
/**
* GD 画像回転変換
* argv : 1 : ソースファイル名, 2 : デストファイル名, 3 : 角度
*/
// 引数取得 //
$srcfnm = $argv[1];
$dstfnm = $argv[2];
$degree = $argv[3];
// 画像タイプ取得 //
list($src_width, $src_height, $type) = getimagesize($srcfnm);
switch ($type) {
case IMAGETYPE_JPEG: // 2
$im = imagecreatefromjpeg($srcfnm);
break;
case IMAGETYPE_PNG: // 3
$im = imagecreatefrompng($srcfnm);
break;
case IMAGETYPE_GIF: // 1
$im = imagecreatefromgif($srcfnm);
break;
}
// ++ 回転して保存 ++ //
$res = 1;
if ($im) {
// 回転 //
//$degree = $degree * -1;
$rotate = imagerotate($im, $degree * -1, 0); // 0 は余白色
// 保存 //
if ($type == IMAGETYPE_JPEG) {
imagejpeg($rotate, $dstfnm);
}
else if ($type == IMAGETYPE_PNG) {
imagepng($rotate, $dstfnm);
}
else {
imagegif($rotate, $dstfnm);
}
}
else {
$res = 0;
}
// メモリの開放 //
imagedestroy($im);
imagedestroy($rotate);
// 連想配列に格納 //
$responce = [];
$responce["Degree"] = (int)$degree;
$responce["Result"] = $res;
// 処理結果をJSONに変換して出力 //
echo json_encode($responce, JSON_PRETTY_PRINT);
?>