PHPは画像を等比例拡大・縮小する
2814 ワード
最近、ウィジェットの画像データを処理するには、ライブラリ内のデータの画像を等比例拡大縮小する必要があります.自分もネット上で探しましたが、最終的に拡大、縮小、保存に適した例を合成しました.以下、このコードを共有します.
以上のコードは、私たちの要求に従って画像の拡大、縮小を処理し、以下にどのように参照するコードを処理します.
これにより、画像を拡大、縮小してローカルに保存することに成功しました.
/**
* 【 】
* @param $filePath【 】
* @param $saveImage【 】
* @param $maxWidth【 】
* @param $maxHeight【 】
* @param $minWith【 】
* @param $minHeight【 】
*/
function resizeImage($filePath, $saveImage, $maxWidth, $maxHeight, $minWith, $minHeight)
{
//
$tmpImageSize = getimagesize($filePath);
$originalImageWidth = $tmpImageSize[0]; //
$originalImageHeight = $tmpImageSize[1]; //
$originalImageType = $tmpImageSize[2]; //
//
$targetWidth = $tmpImageSize[0];
$targetHeight = $tmpImageSize[1];
//
if ($originalImageWidth > $maxWidth) { //
$targetWidth = $maxWidth;
$targetHeight = $originalImageHeight * ($maxWidth / $originalImageWidth);
}
if ($originalImageWidth < $minWith) { //
$targetWidth = $minWith;
$targetHeight = $originalImageHeight * ($minWith / $originalImageWidth);
}
if ($targetHeight > $maxHeight) { //
$targetWidth = $targetWidth * ($maxHeight / $targetHeight);
$targetHeight = $maxHeight;
}
if ($targetHeight < $minHeight) { //
$targetWidth = $targetWidth * ($minHeight / $targetHeight);
$targetHeight = $minHeight;
}
// 【 】
if ($targetWidth < $minWith) {
$targetWidth = $minWith;
}
if ($targetWidth > $maxWidth) {
$targetWidth = $maxWidth;
}
if ($targetHeight < $minHeight) {
$targetHeight = $minHeight;
}
if ($targetHeight > $maxHeight) {
$targetHeight = $maxHeight;
}
//
$targetWidth = ceil($targetWidth);
$targetHeight = ceil($targetHeight);
//
if ($originalImageType == 1) {
$temPic = imagecreatefromgif($filePath);
} else if ($originalImageType == 2) {
$temPic = imagecreatefromjpeg($filePath);
} else if ($originalImageType == 3) {
$temPic = imagecreatefrompng($filePath);
} else {
exit();
}
//
$thPic = imagecreatetruecolor($targetWidth, $targetHeight);
//
$color = imagecolorallocate($thPic, 255, 255, 255);
imagefill($thPic, 0, 0, $color);
//
imagecopyresampled($thPic, $temPic, 0, 0, 0, 0, $targetWidth, $targetHeight,
$originalImageWidth, $originalImageHeight);
//
imagejpeg($thPic, $saveImage);
}
以上のコードは、私たちの要求に従って画像の拡大、縮小を処理し、以下にどのように参照するコードを処理します.
resizeImage('image/123.jpg','image/321.jpg', 1024, 1024,200, 200);
これにより、画像を拡大、縮小してローカルに保存することに成功しました.