ホームページ > バックエンド開発 > PHPチュートリアル > phpでGDを使用してアスペクト比を維持したサムネイルを作成する

phpでGDを使用してアスペクト比を維持したサムネイルを作成する

WBOY
リリース: 2016-07-25 08:43:07
オリジナル
949 人が閲覧しました
  1. /**
  2. * $inputFileName から高さや幅が以下のサムネイル画像を作成します
  3. * $maxSize。新しい画像リソースを返すか、エラーの場合は false を返します。
  4. * 著者: mthorn.net
  5. */
  6. 関数thumbnail($inputFileName, $maxSize = 100)
  7. {
  8. $info = getimagesize($inputFileName);
  9. $type = isset($info['type'] )? $info['type'] : $info[2];
  10. // ファイルタイプのサポートをチェック
  11. if ( !(imagetypes() & $type) )
  12. {
  13. // サーバーはファイルタイプをサポートしていません
  14. return false ;
  15. }
  16. $width = isset($info['width']) ? $info['width'] : $info[0];
  17. $height = isset($info['height']) ? $info['height'] : $info[1];
  18. // アスペクト比を計算します
  19. $wRatio = $maxSize / $width;
  20. $hRatio = $maxSize / $height;
  21. // imagecreatefromstring を使用すると自動的に検出されますファイルの種類
  22. $sourceImage = imagecreatefromstring(file_get_contents($inputFileName));
  23. // 最大サイズ以下の比例した幅と高さを計算します。
  24. if ( ($width <= $maxSize) && ($height
  25. {
  26. // 入力はサムネイルより小さいので、何もしません
  27. return $sourceImage;
  28. }
  29. elseif ( ($wRatio * $height) < $maxSize )
  30. {
  31. // 画像は水平です
  32. $tHeight = ceil($wRatio * $height);
  33. $tWidth = $maxSize;
  34. }
  35. else
  36. {
  37. // 画像は垂直です
  38. $tWidth = ceil($hRatio * $width);
  39. $tHeight = $maxSize ;
  40. }
  41. $thumb = imagecreatetruecolor($tWidth, $tHeight);
  42. if ( $sourceImage === false )
  43. {
  44. // 画像を読み込めませんでした
  45. return false;
  46. }
  47. // リサンプリングされたメイクをコピーします滑らかなサムネイル
  48. imagecopyresampled($thumb, $sourceImage, 0, 0, 0, 0, $tWidth, $tHeight, $width, $height);
  49. imagedestroy($sourceImage);
  50. return $thumb;
  51. }
  52. /**
  53. * 画像をファイルに保存します。タイプは拡張子から決まります
  54. * $qualityはjpegのみに使用されます
  55. * 著者: mthorn.net
  56. */
  57. function imageToFile($im, $fileName, $quality = 80)
  58. {
  59. if ( !$im || file_exists($fileName) )
  60. {
  61. return false;
  62. }
  63. $ext = strto lower(substr($fileName, strrpos($fileName, '.')));
  64. switch ( $ext )
  65. {
  66. case ' .gif':
  67. imagegif($im, $fileName);
  68. ブレーク;
  69. ケース '.jpg':
  70. ケース '.jpeg':
  71. imagejpeg($im, $fileName, $quality);
  72. ブレーク;
  73. ケース ' .png':
  74. imagepng($im, $fileName);
  75. ブレーク;
  76. case '.bmp':
  77. imagewbmp($im, $fileName);
  78. ブレーク;
  79. デフォルト:
  80. return false;
  81. }
  82. return true ;
  83. }
  84. $im =thumbnail('temp.jpg', 100);
  85. imageToFile($im, 'temp-thumbnail.jpg');
复制代

php


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート