私は現在、Pligg CMS ベースの Web サイトに取り組んでおり、ユーザーが提供したリンクから投稿にサムネイルを添付するデフォルトの画像アップロード モジュールは、画像処理に PHP の GD ライブラリを使用しています。結果のサムネイルの品質が低下し、Web 検索を少し行った後、imagecopyresized
関数をに置き換える必要があることがわかりましたimagecopyresampled
。
主な問題は、私が Web 開発の新人で、どこから始めればよいかわからないことです。私が思う(おそらく間違っている)コードのチャンクは、画像処理を担当しており、編集する必要があります。
// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );
// copy and resize old image into new image
while (file_exists("$thumb_dir/$name$i.jpg")) $i++;
$name = "$name$i.jpg";
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
if (!imagejpeg( $tmp_img, "$thumb_dir/$name",$settings['quality'] ))
$error .= "Can't create thumbnail $thumb_dir/$name";
else
$db->query("INSERT INTO ".table_prefix."files
SET file_size='$size',
file_orig_id='$orig_id',
file_user_id={$current_user->user_id},
file_link_id=$link_id,
file_ispicture=1,
file_comment_id='".$db->escape($_POST['comment'])."',
file_real_size='".filesize("$thumb_dir/$name")."',
file_name='".$db->escape($name)."'");
}
return $error;
私が見たところ、画像は最初にimagecreatruecolor
関数を介して新しいtmp_img
ものに処理され、次にimagecopyresized
関数を介して処理されます。
私には経験がないので、これが XY サイズの画像を品質を落とさずにサイズ変更する正しい方法であるかどうかはわかりません。imagecreatetruecolor
と の両方をimagecopyresized
に置き換える必要がありimagecopyresampled
ますか?