ホームページ >バックエンド開発 >PHPチュートリアル >PHP画像スケーリング機能:幅に応じて画像を比例的に拡大縮小します

PHP画像スケーリング機能:幅に応じて画像を比例的に拡大縮小します

WBOY
WBOYオリジナル
2016-07-25 08:51:341082ブラウズ
  1. /*

  2. 画像の幅を制限し、画像を比例的に拡大縮小する単純な関数です。プログラムは元の画像を上書きしません。
  3. 画像比例スケーリング関数パラメータの説明:
  4. $imgsrc 元の画像アドレスは、リモート画像またはサーバー上のパスにすることができます。
  5. $newimgname は縮小画像の名前です。
  6. $kuan は画像の幅を制限します。この幅を超える場合、画像は縮小されます。

  7. 例:

  8. $imgsrc = "http://www.xingzuo51.com/upload/20141116/20141116010041-0.jpg";//リモート画像にすることもできます。
  9. $newimgname = "upload/20141116/000.jpg"; //ローカルパスの前に「/」を追加しないでください
  10. $kuan = 600;
  11. img_suofang($imgsrc,$newimgname,$kuan);画像縮小関数
  12. */
  13. function img_suofang($imgsrc,$newimgname,$kuan){
  14. $info = getimagesize($imgsrc) //画像情報を取得
  15. list($w,$h) = $info;
  16. ; $bl = ($ h/$w);
  17. // print_r($info);
  18. // die();
  19. // $type = $info[2];
  20. // die($type);
  21. if ($w>$ kuan){
  22. $k = $kuan;
  23. $g = ($k*$bl);
  24. switch($info[2]){
  25. case 1:
  26. $im = imagecreatefromgif($imgsrc) ;
  27. $n = imagecreatetruecolor($k,$g);
  28. imagecopyresampled($n,$im,0,0,0,0,$k,$g,$w,$h);
  29. $type = "。 gif";
  30. imagegif ($n,$newimgname."$type");
  31. ブレーク;
  32. ケース 2:
  33. $im = imagecreatefromjpeg($imgsrc);
  34. $n = imagecreatetruecolor($k,$g);
  35. imagecopyresampled ($n,$ im,0,0,0,0,$k,$g,$w,$h);
  36. $type = ".jpg";
  37. imagejpeg($n,$newimgname.$type);
  38. ブレーク;
  39. ケース 3:
  40. $im = imagecreatefrompng($imgsrc);
  41. $n = imagecreatetruecolor($k,$g);
  42. imagecopyresampled($n,$im,0,0,0,0,$k, $g,$w ,$h);
  43. $type = ".png";
  44. imagepng($n,$newimgname.$type);
  45. ブレーク;
  46. デフォルト:
  47. die("No jpg Image");
  48. ブレーク;
  49. }< /p>
  50. if ($im && $n) {

  51. echo "サムネイルが正常に生成されました。
    ";
  52. }else{
  53. echo "サムネイルの生成に失敗しました。 ";
  54. }
  55. imagedestroy( $im );
  56. imagedestroy( $n );
  57. }else{
  58. echo "画像は指定された幅を超えないため、拡大縮小する必要はありません。 ";
  59. }
  60. }

コードをコピー


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