强制上传的图像保持其比例

发布于 2024-11-04 07:32:24 字数 274 浏览 0 评论 0原文

我在图像标签中显示图像

<img src="image.jpg" width="100" height="50" />

我用户上传图像大小 100x100 我希望它像上面的标签一样显示

<img src="image.jpg" width="50" height="50" />

如何实现?

ps

如果这是服务器端问题,我正在使用 php。

I dispaly image in an image tag

<img src="image.jpg" width="100" height="50" />

I user uploads image size 100x100 I want it to be displayed like the tag above is

<img src="image.jpg" width="50" height="50" />

How to achieve that?

ps

I am using php if it is server side issue at all.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

九歌凝 2024-11-11 07:32:24

使用getimagesize()获取图像大小。然后执行此操作以缩小以适合,但保持纵横比:

if ($width > $height)
{
    $ratio = (float)100 / $width;
}
else
{
    $ratio = (float)100 / $height;
}

$width  = (int)round($width  * $ratio);
$height = (int)round($height * $ratio);

Use getimagesize() to get the image size. Then do this to shrink-to-fit, but maintaining the aspect ratio:

if ($width > $height)
{
    $ratio = (float)100 / $width;
}
else
{
    $ratio = (float)100 / $height;
}

$width  = (int)round($width  * $ratio);
$height = (int)round($height * $ratio);
离不开的别离 2024-11-11 07:32:24

此代码将使任何图像适合 maxWidth x maxHeight 框,保持宽高比并用白色背景填充。

$img = new Imagick('orig.jpg');
$maxWidth = 100;
$maxHeight = 50;

$geom = $img->getImageGeometry();
$fitWidth = (($maxWidth/$geom['width'])<($maxHeight/$geom['height']))?true:false;
if($fitWidth){
    $img->thumbnailImage($maxWidth,0,false);
}else{
    $img->thumbnailImage(0,$maxHeight,false);
}

$canvas = new Imagick();
$canvas->newImage($maxWidth,$maxHeight,'white','jpg');

$geom = $img->getImageGeometry();
$x = ($maxWidth-$geom['width'])/2;
$y = ($maxHeight-$geom['height'])/2;
$canvas->compositeImage($img,imagick::COMPOSITE_OVER,$x,$y);

$canvas->writeImage('thumb.jpg');

This code will fit any image to maxWidth x maxHeight box, keeping aspect ratio and padding with white background.

$img = new Imagick('orig.jpg');
$maxWidth = 100;
$maxHeight = 50;

$geom = $img->getImageGeometry();
$fitWidth = (($maxWidth/$geom['width'])<($maxHeight/$geom['height']))?true:false;
if($fitWidth){
    $img->thumbnailImage($maxWidth,0,false);
}else{
    $img->thumbnailImage(0,$maxHeight,false);
}

$canvas = new Imagick();
$canvas->newImage($maxWidth,$maxHeight,'white','jpg');

$geom = $img->getImageGeometry();
$x = ($maxWidth-$geom['width'])/2;
$y = ($maxHeight-$geom['height'])/2;
$canvas->compositeImage($img,imagick::COMPOSITE_OVER,$x,$y);

$canvas->writeImage('thumb.jpg');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文