【问题标题】:Resizing images调整图像大小
【发布时间】:2010-11-20 17:02:19
【问题描述】:

我正在使用 PHP 开发一个论坛应用程序。在签名字段中我有
"<img src='randomimage.png'><br>bla blah"

如果图像大于字段,它会拉伸我的表格并且看起来很糟糕。如果图片太大,有什么办法可以调整大小?

对不起,我的英语不好,感谢您的阅读

编辑:问题在于它不仅仅是图像。这是图像和文本“大文本”。

尊敬的,汤姆

【问题讨论】:

    标签: php image resize forum stretch


    【解决方案1】:

    PHP...

    您可以使用 gdlibrary 重新调整图像大小(请参阅:PHP/GD - Cropping and Resizing Images),但如果您还不太熟悉 PHP,这可能会很复杂。

    jQuery/Javascript

    存在一个可以动态调整图像大小(拉伸图像本身)的插件。查看 maxSide:http://css-tricks.com/maxside-jquery-plugin-and-how-to/

    CSS...

    保持签名图像驯服的快速解决方案是使用 css 限制它们的溢出:

    <img src="randomimage.png" />
    

    变成

    <div class="sigBox"><img src="randomimage.png" /></div>
    

    使用以下 CSS:

    div.sigBox { overflow:hidden; width:50px; height:50px; }
    

    这将隐藏大图像,而不是让它们扭曲您的内容。

    【讨论】:

      【解决方案2】:

      您可能首先想要获取图像尺寸。然后,您可以保持纵横比,同时通过img 标签的简单 HTML heightwidth 属性设置新尺寸。

      您可能还想考虑在本地托管签名。当用户上传图片时,您可以通过GD Library 进行所有调整大小。

      【讨论】:

        【解决方案3】:
        <img src="/img/foo.png" height="100" width="100" />
        

        高度和宽度以像素为单位。这是如果您想在 HTML 中调整图像的大小(它会下载完整的图像,然后将其“挤压”到指定的大小)。

        如果您想以编程方式更改物理图像文件,请查看 PHP GD 函数:http://us.php.net/manual/en/ref.image.php

        【讨论】:

          【解决方案4】:

          对于我管理的一个论坛,我们将签名块放在 div 中,并在 CSS 中设置了 overflow: hidden。这样一来,输入大量 600x300 签名图像和一段文本的用户不会从中受益 - 只有指定的 400x90 区域出现。看起来效果不错。

          【讨论】:

            【解决方案5】:

            正如 JoshL 和 John T 所指出的,您可以使用 php 的内置图像处理支持来动态更改图像。在您的情况下,您可以简单地制作一个 php 脚本来加载图像,将其调整为适当的尺寸,提供它并保存调整后图像的缓存副本以避免后续请求的处理开销。

            你最终会在你的 HTML 代码中使用这样的东西

            <img src="img.php?file=foobar.jpg">
            

            【讨论】:

              【解决方案6】:

              使用 Javascript:

              function changeSize(imageOrTextId, tableId)
              {
                  if (document.getElementById(imageOrTextId).width > document.getElementById(tableId).width)
                  {
                      document.getElementById(imageOrTextId).width = document.getElementById(tableId).width;
                  }
              }
              

              示例 HTML:

              <body onload="changeSize('image1', 'table1')">
                  <table id="table1" width="400" height="400">
                      <img src="randomimage.png" id="image1" />
                  </table>
              </body>
              

              编辑:看起来 John T 也发布了这种方式...抱歉,我在发布之前没有注意到。

              【讨论】:

                【解决方案7】:

                使用 css

                <img src="randomimage.png" style="max-width:100px;max-height:100px;" />
                

                这适用于我测试过的所有浏览器

                【讨论】:

                  【解决方案8】:
                       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                               <html xmlns="http://www.w3.org/1999/xhtml">
                                <head>
                               <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                          <title>Untitled Document</title>
                          </head>
                  
                         <body>
                          <?php
                        $thumb_width = 100;
                        $thumb_height = 100;
                          $full = imagecreatefromjpeg('sample.jpg');
                          $width = imagesx($full);
                       $height = imagesy($full);
                  
                        if($width < $height) {
                  $divisor = $width / $thumb_width;
                         } 
                         else {
                  $divisor = $height / $thumb_height;
                       }
                  
                      $new_width= ceil($width / $divisor);
                    $new_height = ceil($height / $divisor);
                  
                    //get center point
                    $thumbx = floor(($new_width - $thumb_width) / 2);
                    $thumby = floor(($new_height - $thumb_height)/2);
                  
                   $new_image = imagecreatetruecolor($new_width, $new_height);
                    $new_image_fixed = imagecreatetruecolor($thumb_width, $thumb_height);
                  
                     imagecopyresized($new_image, $full, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                  
                     imagecopyresized($new_image_fixed, $new_image, 0, 0, $thumbx, $thumby, $thumb_width,                                      $thumb_height, $thumb_width, $thumb_height);
                  
                       imagejpeg($new_image, "new_sample.jpg", 100);
                      imagejpeg($new_image_fixed, "new_sample_fixed.jpg", 100);
                       ?>
                       </body>
                        </html>
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2020-05-10
                    • 2011-10-24
                    • 1970-01-01
                    相关资源
                    最近更新 更多