0
私は以下のphp image関数を使用して画像をアップロードしたり、ページに画像を表示しているときにサイズを変更していますが、元の画像のサイズを変更しようとしたとき、私が望む実際の次元。PHPの画像リサンプリング寸法の問題
例:私は180 X 180
にサイズを変更するつもりが、それは私が180
と高さ120
幅た元画像の幅は600
で、高さは400
です。誰にも問題がどんなものか分かりませんか?
<?php
function CroppedThumbnail($imagename, $meta, $newpath, $imgwidth, $imgheight, $rename, $imgQuality){
// Set a maximum height and width
$width = $imgwidth;
$height = $imgheight;
$url = '';
//Get image info
$info = @getimagesize($imagename);
$fileparts = pathinfo($imagename);
// Get new dimensions
$imageAvatar = substr($fileparts['filename'],0,5) . '-' . $imgwidth . 'x' . $imgheight . '.png';
if(is_dir($newpath . '/') && file_exists($newpath . '/' . $imageAvatar)){
return $url . $newpath . '/' . $imageAvatar;
}else{
list($width_orig, $height_orig) = $info;
$ratio_orig = $width_orig/$height_orig;
if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_orig;
}
// Resample
if ($info['mime'] == 'image/jpeg'){
$image = imagecreatefromjpeg($url.$imagename);
}
else if ($info['mime'] == 'image/gif'){
$image = imagecreatefromgif($url.$imagename);
}
else if ($info['mime'] == 'image/png'){
$image = imagecreatefrompng($url.$imagename);
}
$image_p = imagecreatetruecolor($width, $height);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
//Rename the image
if($rename == true){
$newName = substr($fileparts['filename'],0,5) . '-' . $imgwidth . 'x' . $imgheight;
$newFileName = $newpath . '/' . $newName . '.png';
}else{
$newFileName = $newpath . '/' . $imagename;
}
// Output
imagejpeg($image_p, $newFileName, $imgQuality);
return $url . $newFileName;
}
}
600/400 = 1.5および180/120 = 1.5である。あなたの画像を180x180に変換すると、あなたは本当に良く見えない画像を得るでしょう。 – Danielius
@Danieliusはいはいですが、ユーザーが任意の次元の画像をアップロードしていて、180x180が必要なため、何をすべきか分かりません。私はまた、彼らが実際のサイズを取得する方法を知らないので、彼らが選択する任意の画像を拒否することができます – Peter
フィリップ、ああ、私は理解しています。 – Danielius