php - 在 PHP 中任意调整图像大小

标签 php

调整图像大小的最佳方法是什么,可以是任何尺寸,调整到固定大小,或者至少适合固定大小?

图像来自不在我控制范围内的随机 url,我必须确保图像不会超出大约 250 像素 x 300 像素的区域,或图层的 20% x 50%。

我认为我会首先确定大小,如果它超出范围,则按一个因子调整大小,但我不确定如果图像大小可以是任何大小,我不确定如何计算调整大小的逻辑。

编辑:我没有本地访问图像的权限,图像 url 在一个变量中,输出为 img src=...,我需要一种方法来指定宽度和高度标签的值。

最佳答案

使用 ImageMagick 很容易做到。您可以通过 exec 使用转换命令行工具,也可以使用 http://www.francodacosta.com/phmagick/resizing-images .
如果您使用“转换”,您甚至可以告诉 ImageMagick 只调整较大图像的大小而不转换较小图像:http://www.imagemagick.org/Usage/resize/

如果您没有本地访问权限,您将无法使用 ImageMagick:

<?php
$maxWidth  = 250;
$maxHeight = 500;

$size = getimagesize($url);
if ($size) {
    $imageWidth  = $size[0];
    $imageHeight = $size[1];
    $wRatio = $imageWidth / $maxWidth;
    $hRatio = $imageHeight / $maxHeight;
    $maxRatio = max($wRatio, $hRatio);
    if ($maxRatio > 1) {
        $outputWidth = $imageWidth / $maxRatio;
        $outputHeight = $imageHeight / $maxRatio;
    } else {
        $outputWidth = $imageWidth;
        $outputHeight = $imageHeight;
    }
}
?>

关于php - 在 PHP 中任意调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/461167/

相关文章:

php - 添加数据到分页器(KnpPaginatorBundle,Symfony)

php - Laravel 和 Page 中的路由问题找不到

php - 每个用户每天结构的 Mysql 访问者统计信息?

php - fatal error : Call to undefined function base_url()

php - 使用bean抓取sugarcrm中的完整表记录

javascript - 将数组值从 html 传递到 javascript

php - 无法使用 PHP 执行外部进程

c# - ASP.NET 模块可以上传到 PHP 域吗?

php - 从数据库检索数据并显示在网页上不起作用

php - 我有 2 个 MySql 表。如何在 1 个 sql 查询中获取并非所有数据?