English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
本文はPHPでぼかし画像を生成する方法を実装する方法について説明します。皆様に共有し、以下のように参考にしてください:
<&63;php class image_blur{ /** * 画像高スケールぼかし(適用png/jpg/gif形式) * @param $srcImg 元画像 * @param $savepath 保存パス * @param $savename 保存名 * @param $positon 濾過度 * *基於Martijn Frazerのコードの拡張、感謝Martijn Frazer */ public function gaussian_blur($srcImg,$savepath=null,$savename=null,$blurFactor=3{ $gdImageResource=$this->image_create_from_ext($srcImg); $srcImgObj=$this->blur($gdImageResource,$blurFactor); $temp = pathinfo($srcImg); $name = $temp['basename']; $path = $temp['dirname']; $exte = $temp['extension']; $savename = $savename &63; $savename : $name; $savepath = $savepath &63; $savepath : $path; $savefile = $savepath .'/'. $savename; $srcinfo = @getimagesize($srcImg); switch ($srcinfo[2}) { case 1: imagegif($srcImgObj, $savefile); break; case 2: imagejpeg($srcImgObj, $savefile); break; case 3: imagepng($srcImgObj, $savefile); break; デフォルト: return '保存に失敗しました'; //保存に失敗しました } return $savefile; imagedestroy($srcImgObj); } /** * 強いぼやけ * * @param $gdImageResource 画像リソース * @param $blurFactor 選択可能なぼやけの程度 * 選択可能なぼやけの程度 0を使用 3デフォルトで、5非常にぼやけます * @return GD画像リソースタイプ * @author Martijn Frazer, idea based on http://stackoverflow.com/a/20264482 */ private function blur($gdImageResource, $blurFactor = 3) {}} // blurFactorは整数でなければなりません $blurFactor = round($blurFactor); $originalWidth = imagesx($gdImageResource); $originalHeight = imagesy($gdImageResource); $smallestWidth = ceil($originalWidth * pow(0.5, $blurFactor)); $smallestHeight = ceil($originalHeight * pow(0.5, $blurFactor)); // 最初の実行では、前の画像は元の入力です $prevImage = $gdImageResource; $prevWidth = $originalWidth; $prevHeight = $originalHeight; // scale way down and gradually scale back up, blurring all the way for($i = 0; $i < $blurFactor; $i += 1) {}} // determine dimensions of next image $nextWidth = $smallestWidth * pow(2, $i); $nextHeight = $smallestHeight * pow(2, $i); // resize previous image to next size $nextImage = imagecreatetruecolor($nextWidth, $nextHeight); imagecopyresized($nextImage, $prevImage, 0, 0, 0, 0, $nextWidth, $nextHeight, $prevWidth, $prevHeight); // apply blur filter imagefilter($nextImage, IMG_FILTER_GAUSSIAN_BLUR); // now the new image becomes the previous image for the next step $prevImage = $nextImage; $prevWidth = $nextWidth; $prevHeight = $nextHeight; } // scale back to original size and blur one more time imagecopyresized($gdImageResource, $nextImage, 0, 0, 0, 0, $originalWidth, $originalHeight, $nextWidth, $nextHeight); imagefilter($gdImageResource, IMG_FILTER_GAUSSIAN_BLUR); // clean up imagedestroy($prevImage); // return result return $gdImageResource; } private function image_create_from_ext($imgfile) {}} $info = getimagesize($imgfile); $im = null; switch ($info[2}) { case 1: $im=imagecreatefromgif($imgfile); break; case 2: $im=imagecreatefromjpeg($imgfile); break; case 3: $im=imagecreatefrompng($imgfile); break; } return $im; } } $image_blur = new image_blur(); $image_blur->gaussian_blur("./1.jpg",null,null,3); ?>
元画像の効果:
ぼやけた画像の効果:
PHPに関連する内容に興味を持つ読者は、本サイトの特集を確認してください:《PHP グラフィックと画像操作の技術集》、《php ファイル操作の要約》、《PHP 配列(Array)操作の技術大全》、《PHP 基本文法 初級 チュートリアル》、《PHP 运算と演算子の用法の要約》、《php オブジェクト指向プログラムデザイン 初級 チュートリアル》、《PHP ネットワークプログラミングの技術集》、《php 文字列(string)の用法の要約》、《php+mysql データベース操作 初級 チュートリアル》および《php 常見のデータベース操作の技術集》
本文の内容が皆様のPHPプログラムデザインに役立つことを願っています。
声明:本文の内容はインターネットから収集され、著作権者に帰属します。インターネットユーザーが自発的に貢献し、自己でアップロードしたものです。本サイトは所有権を持ちません。人工編集は行われていません。また、関連する法的責任を負いません。著作権侵害を疑う内容がある場合は、以下のメールアドレスまでご連絡ください:notice#oldtoolbag.com(メールを送信する際、#を@に置き換えてください。告発を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)