English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHPを使用してぼやけた画像を生成する方法の例

本文は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(メールを送信する際、#を@に置き換えてください。告発を行い、関連する証拠を提供してください。一旦確認が取れましたら、本サイトは即座に侵害疑いのコンテンツを削除します。)

基本教程
おすすめ