ホームページ  >  記事  >  バックエンド開発  >  画像を同じ比率で拡大縮小するために画像をアップロードするPHPのコード

画像を同じ比率で拡大縮小するために画像をアップロードするPHPのコード

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

  2. *
  3. * @著者 zhao jinhan
  4. * @日付 2014 年 1 月 13 日 11:54:30
  5. * @email xb_zjh@126.com
  6. *
  7. */
  8. header('Content-type:text/html; charset=utf-8');
  9. //サムネイルの幅を定義します。と高さ
  10. define('THUMB_WIDTH',300);
  11. define('THUMB_HEIGHT',300);
  12. /**
  13. * アップロードされたファイル名を再生成します
  14. * @return string
  15. * @author zhao jinhan
  16. *
  17. */
  18. function _file_type($filetype = null){
  19. switch($filetype)
  20. {
  21. case "image/jpeg":
  22. $fileextname = "jpg";
  23. case "image/gif":
  24. $fileextname = " png";
  25. break;
  26. デフォルト:
  27. $fileextname = false;
  28. break;
  29. }
  30. return $fileextname?date('YmdHis',time()).'.'.$fileextname:false;
  31. }
  32. /* *
  33. *
  34. * @param string $filename
  35. * @param string $width
  36. * @param string $height
  37. * @param string $quality
  38. * @param string $savepath
  39. * @return boolean
  40. */
  41. function _make_thumb($filename='', $width=THUMB_WIDTH, $height=THUMB_HEIGHT, $savepath='./upload'){
  42. if(file_exists($filename)){
  43. //アップロード画像サイズ
  44. $imagesize=getimagesize($filename);
  45. $imageheight=$imagesize[1];
  46. $mime = $imagesize['mime'];比率
  47. $ratio = $imagewidth/$imageheight;
  48. //新しい背景画像を作成します
  49. $bgimg = imagecreatetruecolor($width, $height);
  50. $white = imagecolorallocate($bgimg, 255, 255, 255); / 背景色を白に塗りつぶします
  51. imagefill($bgimg,0,0,$white);
  52. if($mime == 'image/gif'){
  53. $im = @imagecreatefromgif($filename); open * /
  54. $outfun = 'imagegif';
  55. }elseif($mime == 'image/png'){
  56. $im = @imagecreatefrompng($filename) /* 開こうとします */
  57. $outfun = 'imagepng ';
  58. }else{
  59. $im = @imagecreatefromjpeg($filename); /* 開こうとします */
  60. $outfun = 'imagejpeg';
  61. }
  62. if($ratio > 1){
  63. //幅はより大きい
  64. if ($imagewidth > height-$new_height)/2));
  65. imagecopyresampled($bgimg, $im, 0, $bg_y, 0, 0, $new_width, $new_height, $imagewidth, $imageheight); else{
  66. //画像をコピー 背景画像に移動
  67. $copy = true;
  68. }else{
  69. //高さが大きくなります
  70. if($imageheight > $height){
  71. //画像を拡大縮小します
  72. $ new_height = $height;
  73. $new_width = ($height*$imagewidth)/$imageheight;
  74. $bg_x = ceil(($width-$new_width)/2); , 0, 0, $new_width, $new_height , $imagewidth, $imageheight);
  75. }else{
  76. //画像を背景画像にコピーします
  77. }
  78. }
  79. if($copy){
  80. //画像を背景画像にコピー
  81. $bg_x = ceil(($width-$imagewidth)/2)
  82. $bg_y = ceil(($height-$imageheight)/2); im, $bg_x, $bg_y, 0, 0, $imagewidth, $imageheight);
  83. $ext = _file_type($mime); imagedestroy($bgimg);
  84. return $savepath;
  85. }else{
  86. }
  87. }
  88. $size = $_POST['size']?strtoupper (trim($_POST['size'])) :'2M';
  89. $imgsize = $_FILES['img']['size']?$_FILES['img']['size']/(1024* 1024):0;
  90. $imgwidth = $imgheight = $_POST['width-height']?intval($_POST['width-height']):300;
  91. //カスタマイズされたファイルのアップロード サイズ
  92. ini_set('upload_max_filesize') ,$size);
  93. $mathsize = str_replace ('M','',$size){
  94. if($imgsize>$mathsize){
  95. echo "画像サイズは {$size} を超えてはなりません!"; ;
  96. }
  97. if($file_name = _file_type($ _FILES['img']['type'])){
  98. if($_FILES['img']['error'] == UPLOAD_ERR_OK){
  99. $savepath = 'upload/';
  100. if(!is_dir($savepath)){
  101. mkdir($savepath,0644)
  102. }
  103. //サムネイルを生成
  104. $thumb_file = _make_thumb($_FILES['img']['tmp_name'] , $imgwidth, $imgheight, $savepath);
  105. //move_uploaded_file($_FILES['img']['tmp_name'],$savepath.$file_name);
  106. echo "生成された画像は次のとおりです: ";
  107. }else{
  108. echo $_FILES['img']['error'];
  109. return;
  110. }
  111. }else{
  112. echo "画像の形式が正しくありません。 jpg、gif、png 形式をアップロードしてください!";
  113. return;
  114. }

  115. }else{

  116. echo <<
  117. -equiv="Content-Type" content="text/html; charset=utf-8">
  118. 画像を拡大縮小して正方形に保存します</head> body> <form action="" method="POST" enctype="multipart/form-data"> </li> <li><label> 画像をアップロードします:</label> =" file" name="img" /> </li> <li><div> サムネイルの幅と高さを生成します (ピクセル単位):</label> type="text " name="width-height" value="300" /> </li> <li></div> </li> <li><label> 最大ファイルサイズ:</label> ="text" name="size" value="2M" /> </li> <li></div><input type="submit" name="submit" value="Submit" /> ;/div> </li> <li></html> </li> <li> <li> <li> <li> </li> <li> </li> <li> </li> <li> </li> <li> <li> </li> <li> <li> </ol></div></div> </td></tr></table></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します" href="http://m.php.cn/ja/faq/315013.html">PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します</a></span><span>次の記事:<a class="dBlack" title="PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します" href="http://m.php.cn/ja/faq/315015.html">PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><div class="nphpFoot"><div class="nphpFootBg"><ul class="nphpFootMenu"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><p>ホームページ</p></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><p>コース</p></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><p>に質問</p></a></li><li><a href="http://m.php.cn/ja/login"><b class="icon5"></b><p>私の</p></a></li><div class="clear"></div></ul></div></div><div class="nphpYouBox" style="display: none;"><div class="nphpYouBg"><div class="nphpYouTitle"><span onclick="$('.nphpYouBox').hide()"></span><a href="http://m.php.cn/ja/"></a><div class="clear"></div></div><ul class="nphpYouList"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><span>ホームページ</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><span>コース</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/article.html"><b class="icon3"></b><span>記事</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><span>に質問</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/dic.html"><b class="icon6"></b><span>辞書</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course/type/99.html"><b class="icon7"></b><span>マニュアル</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/xiazai/"><b class="icon8"></b><span>ダウンロード</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/faq/zt" title="特集"><b class="icon12"></b><span>特集</span><div class="clear"></div></a></li><div class="clear"></div></ul></div></div><div class="nphpDing" style="display: none;"><div class="nphpDinglogo"><a href="http://m.php.cn/ja/"></a></div><div class="nphpNavIn1"><div class="swiper-container nphpNavSwiper1"><div class="swiper-wrapper"><div class="swiper-slide"><a href="http://m.php.cn/ja/" >ホームページ</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/article.html" class="hover">記事</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/wenda.html" >に質問</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/course.html" >コース</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/faq/zt" >特集</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/xiazai" >ダウンロード</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/game" >ゲーム</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/dic.html" >辞書</a></div><div class="clear"></div></div></div><div class="langadivs" ><a href="javascript:;" class="bg4 bglanguage"></a><div class="langadiv" ><a onclick="javascript:setlang('zh-cn');" class="language course-right-orders chooselan " href="javascript:;"><span>简体中文</span><span>(ZH-CN)</span></a><a onclick="javascript:setlang('en');" class="language course-right-orders chooselan " href="javascript:;"><span>English</span><span>(EN)</span></a><a onclick="javascript:setlang('zh-tw');" class="language course-right-orders chooselan " href="javascript:;"><span>繁体中文</span><span>(ZH-TW)</span></a><a onclick="javascript:;" class="language course-right-orders chooselan chooselanguage" href="javascript:;"><span>日本語</span><span>(JA)</span></a><a onclick="javascript:setlang('ko');" class="language course-right-orders chooselan " href="javascript:;"><span>한국어</span><span>(KO)</span></a><a onclick="javascript:setlang('ms');" class="language course-right-orders chooselan " href="javascript:;"><span>Melayu</span><span>(MS)</span></a><a onclick="javascript:setlang('fr');" class="language course-right-orders chooselan " href="javascript:;"><span>Français</span><span>(FR)</span></a><a onclick="javascript:setlang('de');" class="language course-right-orders chooselan " href="javascript:;"><span>Deutsch</span><span>(DE)</span></a></div></div><script> var swiper = new Swiper('.nphpNavSwiper1', { slidesPerView : 'auto', observer: true,//修改swiper自己或子元素时,自动初始化swiper observeParents: true,//修改swiper的父元素时,自动初始化swiper }); </script></div></div><!--顶部导航 end--><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>