将图像调整为精确大小,保留宽高比,并填充 php 中的任何空间
-
13-09-2020 - |
题
嘿,
假设我想将图像转换为精确尺寸,例如:400x300。诀窍是,如果图像由于其纵横比而无法容纳 400x300,则将其放置在带有黑色边框的位置。
900x1200 的图像将被转换为 225x300 以保留其纵横比,然后在左右添加黑色边框以使其变为 400x300。
原始照片:
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
|||||||||||||||||||||||
调整大小后我想看起来像这样:
_______________________
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|+++++++||||||||++++++|
|+++++++||||||||++++++|
|+++++++++++++++++++++|
|+++++++++++++++++++++|
|_____________________|
这:“ ++++++++”我想成为某种颜色,而“ |||||||”是图像,中间!
不幸的是我还没有任何代码!
我想要这样的东西:http://phpthumb.sourceforge.net/demo/demo/phpThumb.demo.demo.php#x22谢谢
解决方案
熟悉 gd
功能, ,它允许您操作图像。
您需要使用其中之一读取图像 imagecreatefrom...
功能。然后,您需要使用以下命令创建第二个图像: imagecreatetruecolor
, ,你 充满 与您选择的颜色。然后使用以下命令将原始图像复制到新图像中 imagecopyresampled
, ,这允许您在此过程中调整其大小。您需要事先通过一些简单的数学计算新的大小,其功能如下 getimagesize
可以帮助你。
或者,也可以尝试一下 图像魔术师 类,它是 gd
您可能会或可能不会发现更容易合作。
祝你好运!:)
其他提示
创建一个风格的div以有黑色背景,并在400x300中大小。然后在那个div内显示您的调整大小的图像。您甚至可以包括检查,以确保在显示div之前确保图像不是所需的方面。
这样的东西:
<?
$height-ratio = $height / 300;
$width-ratio = $width / 400;
if ($height-ratio == $width-ratio) {
$ratio = $height-ratio;
} elseif ($height-ratio > $width-ratio) {
$ratio = $height-ratio;
echo "<div class='blackbox'>";
} else {
$ratio = $width-ratio;
echo "<div class='blackbox'>";
}
$newHeight = $height / $ratio;
$newWidth = $width / $ratio;
echo "<img src='".$imgSrc."' height='".$newHeight."' width='".$newWidth."' />";
if ($height-ratio != $width-ratio)
echo "</div>";
?>
.
支持以下的CSS:
.blackbox {
text-align: center;
background-color: black;
height: 300px;
width: 400px;
}
. 我是一个忠实的粉丝,提前编辑和调整图片大小,是我想要的尺寸,而不是在渲染时设置宽度和高度。性能更好,您不必担心不同的浏览器如何不同地处理。
所以如果您没有图像编辑程序GET PAINT.NET。自由,效果良好。