0

私は現在、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ますか?

4

1 に答える 1

1

imagecopyresizedパラメータ要件は同一でimagecopyresampledあるため、次の行で関数名を変更するだけです。

imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

他のすべては同じままである必要があります。

コードはSQL インジェクションに対して脆弱であることに注意してください。準備済みステートメントを読み、使用を開始します。

于 2016-05-22T20:55:29.243 に答える