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

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

WBOY
WBOYオリジナル
2016-07-25 08:51:481015ブラウズ
  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="https://m.php.cn/ja/faq/315013.html">PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します</a></span><span>次の記事:<a class="dBlack" title="PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します" href="https://m.php.cn/ja/faq/315015.html">PHP gd ライブラリは画像サイズのトリミングとスケーリングを実装します</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="https://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="https://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="https://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="https://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="https://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="https://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="https://m.php.cn/ja/about/us.html">私たちについて</a><a href="https://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="https://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><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><!-- Matomo --><script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://tongji.php.cn/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '9']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script><!-- End Matomo Code --></html>