我想知道如何使用getimagesize()创建一个能够检查jpg,gif,png或任何其他类型图像的PHP代码。
然后检查图像宽度是否小于下面CSS代码中的宽度(如果是这样的话),那么PHP代码应该在保持图像宽高比的同时重新调整图像的大小,无论它是横向还是纵向。
CSS代码
overflow: hidden; width:100px; height: auto;
我发现下面列出的这段代码似乎在使用getimagesize(),但它似乎没有重新调整图像大小。有没有办法解决这个问题。
<?php
function imageResize($width, $height, $target) {
//takes the larger size of the width and height and applies the
//formula accordingly...this is so this script will work
//dynamically with any size image
if ($width > $height) {
$percentage = ($target / $width);
} else {
$percentage = ($target / $height);
}
//gets the new value and applies the percentage, then rounds the value
$width = round($width * $percentage);
$height = round($height * $percentage);
//returns the new sizes in html image tag format...this is so you
//can plug this function inside an image tag and just get the
return "width=\"$width\" height=\"$height\"";
}
?>
<?php
//get the image size of the picture and load it into an array
$mysock = getimagesize("images/sock001.jpg");
?>
<!--using a standard html image tag, where you would have the
width and height, insert your new imageResize() function with
the correct attributes -->
<img src="images/sock001.jpg" <?php imageResize($mysock[0],
$mysock[1], 150); ?>>
答案 0 :(得分:1)
您也可以使用CSS设置图像的大小。无论哪种方式,当您向上缩放图像时,图像质量都会降低。
答案 1 :(得分:1)
您可以尝试使用PHP ImageMagick Library's resizeImage method,或者更好地使用scaleImage method。如果我的理解是正确的,那么你真的想要调整图像大小。
如果您只是在演示阶段讨论调整大小,那么this article似乎在谈论这一点。它使用getimagesize
获取维度,然后返回一个字符串,您相应地将其传递给img
标记。我相信这对你有用。
答案 2 :(得分:1)
您的问题是如何询问服务器图像是否大于某个宽度,以便您知道不使用CSS / HTML来调整这些图像的大小。
更好的方法是使用服务器按比例缩小任何太大的图像。如果您相信您的服务器将始终执行此操作,则不需要在浏览器中进行任何大小调整。
答案 3 :(得分:1)
我为内部框架构建了一个自定义Image类,它使用Simon Jarvis的代码来调整图像大小。
您可以在此处找到示例代码和教程:
http://www.white-hat-web-design.co.uk/articles/php-image-resizing.php
基本上,您想要做的事情的魔力归结为我在图像类中使用的以下方法(任何类属性都在其他地方设置,但如果需要,您可以对这些值进行硬编码):
public function resize($width,$height)
{
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->_image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
$this->_image = $new_image;
unset($new_image);
return $this;
}
public function resizeToHeight($height)
{
$ratio = $height / $this->getHeight();
$width = $this->getWidth() * $ratio;
$this->resize($width,$height);
return $this;
}
public function resizeToWidth($width)
{
$ratio = $width / $this->getWidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
return $this;
}
public function output()
{
if($this->_image) {
ob_clean();
ob_end_clean();
// Start sending headers
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Transfer-Encoding: binary");
header("Content-Type: " . $this->_settings['mime']);
$function = 'image' . substr($this->_settings['mime'], 6);
$function($this->_image);
}
}
答案 4 :(得分:0)
您可能会看到您的服务器是否安装了ImageMagick或gd,或者是否有任何其他PHP图像库。
另一个可能更好的选择是在javascript中进行图像处理。