3

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

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

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

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

尊敬的,汤姆

4

8 回答 8

4

PHP...

您可以使用 gdlibrary 重新调整图像大小(请参阅:PHP/GD - 裁剪和调整图像大小),但如果您还不太熟悉 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; }

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

于 2009-08-18T18:40:45.123 回答
3

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

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

于 2009-08-18T18:38:54.457 回答
0
     <!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>
于 2013-09-29T09:47:10.867 回答
0

使用 CSS

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

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

于 2013-05-02T11:13:42.977 回答
0
<img src="/img/foo.png" height="100" width="100" />

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

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

于 2009-08-18T18:40:56.417 回答
0

对于我管理的一个论坛,我们将签名块放在CSS中的divwith set 中。overflow: hidden这样一来,输入大量 600x300 签名图像和一段文本的用户不会从中受益 - 只有指定的 400x90 区域出现。似乎运作良好。

于 2009-08-18T18:46:38.997 回答
0

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

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

<img src="img.php?file=foobar.jpg">
于 2009-08-18T18:53:47.500 回答
0

使用 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>

编辑:看起来约翰 T 也发布了这种方式......对不起,我在发布之前没有注意到它。

于 2009-08-18T19:01:09.620 回答