ホームページ >バックエンド開発 >PHPチュートリアル >PHP サムネイル コード、imagecopyresampled 関数はサムネイルを生成します

PHP サムネイル コード、imagecopyresampled 関数はサムネイルを生成します

WBOY
WBOYオリジナル
2016-07-25 08:51:29832ブラウズ
  1. function CreateImage($SrcImageUrl, $DirImageUrl, $Width, $Height)

  2. {
  3. $img;
  4. $srcw;
  5. $new_width;
  6. $srch;
  7. $new_height;
  8. //画像の種類
  9. $type = substr(strrchr($SrcImageUrl, "."), 1);
  10. // 初期化画像
  11. if($type == "jpg")
  12. $img = imagecreatefromjpeg($SrcImageUrl);
  13. if($type == "gif")
  14. $img = imagecreatefromgif($SrcImageUrl);
  15. if($type == "png")
  16. $img = imagecreatefrompng($SrcImageUrl);

  17. $srcw = imagex($img);

  18. $srch = imagey($img);

  19. if ($srcw / $srch > $Width / $Height)

  20. {
  21. if ($srcw > $Width)
  22. {
  23. $new_width = $Width;
  24. $new_height = $srch * ($Width / $srcw);
  25. }
  26. else
  27. {
  28. $new_width = $srcw;
  29. $new_height = $srch;
  30. }
  31. }
  32. else
  33. {
  34. if ($srch > $Height)
  35. {
  36. $new_height = $Height;
  37. $new_width = $srcw * ($Height / $srch);
  38. }
  39. else
  40. {
  41. $new_width = $srcw;
  42. $new_height = $srch;
  43. }
  44. }
  45. $new_image = imagecreatetruecolor($new_width, $new_height);

  46. imagecopyresampled($new_image, $img, 0, 0, 0, 0, $new_width, $new_height, $srcw, $srch);
  47. imagejpeg($new_image, $DirImageUrl);

  48. imagedestroy($img);

  49. imagedestroy($new_image);
  50. }

复制代

3. 改善されたコード:

  1. /*

  2. *$o_photo 元画像パス

  3. *$d_photo 処理画像パス< /p>

  4. *$width 幅を定義します

  5. *$height 高さを定義

  6. *メソッドcutphoto("test.jpg ","temp. jpg",256,146);

  7. */

  8. 関数cutphoto($o_photo,$d_photo,$width,$height){

  9. $temp_img = imagecreatefromjpeg($o_photo);

  10. $o_width = imagex($temp_img); //元の画像の幅を取得します

  11. $o_height; = imagey($temp_img); //元の画像の高さを取得します

  12. //加工方法を判断します

  13. if($width>$o_width || $height> $o_height){//元の画像の幅または高さが指定されたサイズより小さいため、圧縮されています

  14. $newwidth=$o_width;

  15. newheight=$o_height;

  16. if($o_width>$width){

  17. $newwidth=$width;

  18. }

  19. if($newheight>$height){

  20. < ; p>$newwidth=$newwidth*$height/$newheight;

  21. $newheight=$height;

  22. }

  23. < ;//サムネイル画像

  24. $new_img = imagecreatetruecolor($newwidth, $newheight);

  25. imagecopyresampled($new_img, $temp_img, 0, 0 , 0, 0, $newwidth, $newheight, $o_width, $o_height);

  26. imagejpeg($new_img , $d_photo);

  27. imagedestroy($new_img);

  28. }else{//元の画像の幅と高さが指定したサイズより大きいため、圧縮してトリミングします

  29. if($o_height*$width /$ o_width>$height){// まず、幅が仕様と同じであることを確認します。高さが仕様より大きい場合は、ok

  30. $newwidth=$width;

  31. $newheight=$o_height*$width/$o_width;

  32. $x=0;

  33. $y=($newheight -$height)/2;

  34. }else{ // それ以外の場合は、高さが指定と同じであり、幅が適応されていることを確認してください

  35. $newwidth =$o_width*$height/$o_height;

  36. $newheight=$height;

  37. $x=($newwidth-$width)/2;< ;/p>

  38. $y=0 ;

  39. }

  40. //サムネイル画像

  41. $new_img = imagecreatetruecolor($newwidth, $newheight);< ;/p>

  42. imagecopyresampled($new_img, $temp_img, 0, 0, 0, 0, $newwidth, $newheight, $o_width, $o_height);< ;/p>

  43. imagejpeg( $new_img , $d_photo);

  44. imagedestroy($new_img);

  45. $temp_img = imagecreatefromjpeg($ d_photo);

  46. < p>$o_width = imagex($temp_img); //サムネイルの幅を取得します

    $o_height = imagey($temp_img);サムネイルの高さ

  47. < p>//画像をトリミング

  48. $new_imgx = imagecreatetruecolor($width,$height);

  49. imagecopyresampled($ new_imgx,$temp_img,0,0, $x,$y,$width,$height,$width,$height);

  50. imagejpeg($new_imgx , $d_photo);

  51. imagedestroy( $new_imgx);

  52. }
  53. }
  54. ?>

コードをコピー

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