ホームページ  >  記事  >  バックエンド開発  >  phpでのサムネイル生成について教えてください。

phpでのサムネイル生成について教えてください。

WBOY
WBOYオリジナル
2016-06-23 13:58:13791ブラウズ

次のコードは画像のサムネイルを生成できますが、画像の品質が低下します。生成される画像の品質を制御するためにコードを変更できる人はいますか?



/*
* 関数: PHP 画像の透かし (透かしは画像またはテキストをサポートします)
* パラメーター:
* $groundImage 背景画像、つまり透かしを入れる必要がある画像は、現在サポートされているもののみですgif、jpg、png形式。右側;
* * $waterImage 画像のウォーターマーク、つまりウォーターマークとして使用される画像は、現在 GIF、JPG、および PNG 形式のみをサポートします
* $waterText テキストはウォーターマークとして使用されます。 ASCII コードをサポートします。中国語はサポートしません。
$fontS テキスト サイズ、値は 1、2、3、4 または 5、デフォルトは 5 です。
値は 16 進数のカラー値です。 、デフォルトは #CCCCCC (ホワイト グレー);
* * $fontfile ttf フォント ファイル。テキストの透かしを設定するために使用されるフォントです。 Windows を使用しているユーザーは、システム ディスクのディレクトリで *.ttf を検索して、システムにインストールされているフォント ファイルを取得し、必要なファイルを Web サイトの適切なディレクトリにコピーできます。デフォルトは現在のディレクトリの arial.ttf です。
* $ xoffset 2とは、デフォルトに基づいて2ユニットを右に移動することを意味します。 -2は2ユニットを左に移動することを意味します
* * $ yoffset垂直オフセット、つまり、この値をデフォルトのウォーターマーク座標値に追加すると、デフォルトはデフォルトです。 0、透かしに垂直マージンを残したい場合は、この値を設定できます。フォント ファイルが存在しません
* JPG、PNG
* $waterImage と $waterText を同時に使用しないことをお勧めします。どちらかを選択して、最初に $waterImage を使用してください。
※ $waterImage が有効な場合、パラメータ $waterString、$stringFont、$stringColor は無効になります。
※ウォーターマーク入り画像のファイル名は$groundImageと同じです。
* 著者: Gao Xilin
* 日付: 2007-4-28
* 説明: このプログラムは、longware のプログラムを改造したものです。
*/

//呼び出しメソッド:
//$imageWaterMark = imageWaterMark("1.jpg", 9, "3.png", "", "", "", "", "-50", " -50");



function imageWaterMark($groundImage,$waterPos=0,$waterImage="",$waterText="",$fontSize=12,$textColor="#CCCCCC", $fontfile='. /arial.ttf',$xOffset=0,$yOffset=0)
{
$isWaterImage = FALSE;
//ウォーターマーク ファイルを読み取ります
if(!empty($waterImage) && file_exists($waterImage)) {
$ isWaterImage = TRUE;
$water_info = getimagesize($waterImage);
$water_w = $water_info[0];// ウォーターマーク画像の幅を取得します
$water_h = $water_info[1];/ /ウォーターマーク画像

switch($water_info[2]) { //ウォーターマーク画像の形式を取得します
case 1: $water_im = imagecreatefromgif($waterImage); Break;
ケース 3: $water_im = imagecreatefrompng($waterImage);休憩。 age) && file_exists($groundImage)) {
GetImageSize ($ GROUNDIMAGE);
$ GROUND_W = $ Group [0] // 背景画像の幅
$ GROUND_H = $ Ground_info [1]; ){$ ground_im = imagecreatefrompng($ grandimage); return if($ iswaterimage) ";
} else {
// テキストの透かし
if (! FILE_EXISTS ($ fontfile)) Return 4;
$temp = imagettfbbox($fontSize,0,$fontfile,$waterText);//TrueType フォントを使用してテキストの範囲を取得します $w = $temp[2] - $temp[6]; 3] - $temp[7 ];スイッチ($ waterpos) ;
$w) / 2;
$posY = ($ground_h - $h) / 2;
- $h) / 2;
case 7: // 7 は左下です
$ POSX = 0;
$ $ group_h- $ hBREAK; s ケース 9: // 9 は右下です
$ Posy = $GROUND_H-$ h ,($ground_w - $w));モード
Imagealphablending ($ground_im, true) ;

if($isWaterImage) { //画像のウォーターマーク
Imagecopy($ground_im, $water_im, $posX + $xOffset, $posY + $yOffset, 0, 0, $water_w,$water_h) ; //ターゲットファイルへのコピー} pos
@unlink($groundImage);
switch($ground_info[2]) {//背景画像の形式を取得する
case 1:imagegif($ground_im,$groundImage);break; ground_im、$ grandimage 3:hirm break:unter set($ water_im); ); $ ground_info); ,$groundImage);break;
case 2:imagejpeg($ground_im,$groundImage);break;

を次のように変更します。 1:imagegif($ground_im,$groundImage, $quality); ブレーク;
ケース 2:imagejpeg($ground_im,$groundImage, $quality); ブレーク;
ケース 3:imagepng ($ground_im,$groundImage, (int)( ($quality-1)/10));休憩

2 階でご利用いただけます、ありがとうございます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。