我想将1200x1200
图片转换为1200x600
。
但是,我不想丢失图像比例,这就是为什么我要在左侧和右侧添加白色边框并将图像放在中间。
最终图像将像左边和右边的边框和中间的方形图像,然后我将它保存到文件夹并在我的项目中使用它。
使用GD库可以实现吗?
答案 0 :(得分:1)
您可以编写自己的数学函数,以在特定维度的画布中显示图像。这是我使用的数学函数,
function resize_image($img,$maxwidth,$maxheight) {
//This function will return the specified dimension(width,height)
//dimension[0] - width
//dimension[1] - height
$dimension = array();
$imginfo = getimagesize($img);
$imgwidth = $imginfo[0];
$imgheight = $imginfo[1];
if($imgwidth > $maxwidth){
$ratio = $maxwidth/$imgwidth;
$newwidth = round($imgwidth*$ratio);
$newheight = round($imgheight*$ratio);
if($newheight > $maxheight){
$ratio = $maxheight/$newheight;
$dimension[] = round($newwidth*$ratio);
$dimension[] = round($newheight*$ratio);
return $dimension;
}else{
$dimension[] = $newwidth;
$dimension[] = $newheight;
return $dimension;
}
}elseif($imgheight > $maxheight){
$ratio = $maxheight/$imgheight;
$newwidth = round($imgwidth*$ratio);
$newheight = round($imgheight*$ratio);
if($newwidth > $maxwidth){
$ratio = $maxwidth/$newwidth;
$dimension[] = round($newwidth*$ratio);
$dimension[] = round($newheight*$ratio);
return $dimension;
}else{
$dimension[] = $newwidth;
$dimension[] = $newheight;
return $dimension;
}
}else{
$dimension[] = $imgwidth;
$dimension[] = $imgheight;
return $dimension;
}
}
假设您的图像尺寸为1200x1200(高度:1200,宽度:1200),并且您的画布尺寸(您要显示图像的位置)为1200x600(高度:1200,宽度:600),您可以调用此 resize_image 这样的函数,
$dimension = resize_image("{$your_image_path}.jpg",600,1200);
$width = $dimension[0];
$height = $dimension[1];
并在获得适当的尺寸后,像这样显示您的图片,
<img src="your_image_path.jpg" alt="Image" height="<?php echo $height; ?>" width="<?php echo $width; ?>" />