2017-03-18 4 views
0

私は50%に画像をリサイズし、このPHPスクリプト(または任意のプリセット割合)今PHPイメージ

$filename = 'test.jpg'; 
$percent = 0.5; 

// Content type 
header('Content-Type: image/jpeg'); 

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = $width * $percent; 
$new_height = $height * $percent; 

// Resample 
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

// Output 
imagejpeg($image_p, null, 100); 

を持っているもの、私は1200年(PX)と$のnew_widthを指定し、伝えたい場合$のnew_heightは、縦横比を保っ自動的に計算され、「テスト-2.JPG」として、新しいイメージの名前を設定する

$filename = 'test.jpg'; 

// Content type 
header('Content-Type: image/jpeg'); 

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = 1200; 
$new_height = // MUST BE AUTO; 

// Resample 
$image_p = imagecreatetruecolor($new_width, $new_height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

// Output 
imagejpeg($image_p, null, 100); 

答えて

2

次式が成立しなければならないことを意味し、 "縦横比を保持":

$new_height/$new_width == $height/$width 

したがって、新しい高さを計算するための式である:ceilのことを確実にすること

$new_height = ceil($height * ($new_width/$width)); 

注新しい高さは整数値で、少なくとも1です(新しい幅と古い幅+高さがすべて正の場合)。

2

これはあなたが何を意味するかですか?

// Get new dimensions 
list($width, $height) = getimagesize($filename); 
$new_width = 1200; 
$new_height = ($height/$width)*$new_width; 
+0

非常に簡単で便利な解決策です! –

関連する問題