すべて、 画像をアップロードしてから表示用にサムネイルにしています。私は私のアップロードを処理するために、次のコードを使用しています:アップロードしてサムネイルにしたときに画像が歪んだ
$imageW = $blogOptions['image']['width'];
$imageH = $blogOptions['image']['height'];
$themePath = ABSPATH . 'wp-content/';
$path_to_image_directory = $themePath.'uploads/';
$path_to_thumbs_directory = $themePath.'uploads/thumbs/';
$fieldname = 'logo';
if(preg_match('/[.](jpg)|(gif)|(png)|(JPG)$/', $_FILES[$fieldname]['name'])) {
$now = time();
$filename = $now."_".$_FILES[$fieldname]['name'];
$source = $_FILES[$fieldname]['tmp_name'];
$target = $path_to_image_directory . $filename;
move_uploaded_file($source, $target);
$file = $path_to_image_directory . $filename;
$x = @getimagesize($file);
switch($x[2]) {
case 1:
$type = "gif";
break;
case 2:
$type = "jpeg";
break;
case 3:
$type = "png";
break;
default:
echo "error";
}
if($type == "gif"){
$im = imagecreatefromgif($path_to_image_directory . $filename);
}if($type == "jpeg"){
$im = imagecreatefromjpeg($path_to_image_directory . $filename);
}if($type == "png"){
$im = imagecreatefrompng($path_to_image_directory . $filename);
}
$ox = imagesx($im);
$oy = imagesy($im);
$nx = $imageW;
$ny = $imageH;
$nm = imagecreatetruecolor($nx, $ny);
imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);
if(!file_exists($path_to_thumbs_directory)) {
if(!mkdir($path_to_thumbs_directory)) {
die("There was a problem. Please try again!");
}
}
if($type == "gif"){
imagegif($nm, $path_to_thumbs_directory . $filename);
}if($type == "jpeg"){
imagejpeg($nm, $path_to_thumbs_directory . $filename);
}if($type == "png"){
imagepng($nm, $path_to_thumbs_directory . $filename);
}
}
}
アップロードが正常に動作し、私はそれは画像が極端に歪んで見えている表示すると、ファイルが正常しかし、作成されます。 Wordpressを使用してファイルのアップロードを処理し、サムネイルを作成すると、歪んで見えません。このファイルをアップロードするにはより良い方法がありますか、または画質を失わないために間違っていないことは何ですか?
ありがとうございます!
どのように$ imageWと$ imageHを取得しますか? – Tchoupi
スクリプトはイメージを拡大縮小していません。単純にサイズを変更しています。アスペクト比を維持するためにいくつかの数学を行います。 – Crashspeeder
@マチュー私のWordpressブログには設定があり、私はそれらを引き出します。 – user1048676