【问题标题】:Scale/resize any given image to 16:9 using php使用 php 将任何给定图像缩放/调整为 16:9
【发布时间】:2018-04-12 19:49:03
【问题描述】:

我通过基本获取图像大小并查看宽度/高度是否 = 16:9 来限制我的程序仅接受 16:9 比例的图像。

是否可以让我的程序拍摄任何图像并将其大小/重新缩放为 16:9 而不会使图像看起来很奇怪?

这是我的代码:

    global $config;

    $tempFile = $_FILES['file']['tmp_name'];
    $mimeType = mime_content_type($tempFile);

    $fileName = md5(uniqid());

    switch($mimeType){
        case "image/jpeg":
            $filePath = "images/";
            $extension = IMAGETYPE_JPEG;
            break;
        case "image/png":
            $filePath = "images/";
            $extension = IMAGETYPE_PNG;
            break;
        case "video/mp4":
            $filePath = "videos/";
            $extension = ".mp4";
            break;
    }


    $targetFile = $config['GENERAL']['UPLOAD_PATH'].$filePath.$fileName.$extension;


    move_uploaded_file($tempFile,$targetFile);

【问题讨论】:

  • is it possible to make my program take any image and resize/rescale it to 16:9 是的。退房:stackoverflow.com/questions/29063094/… 该解决方案可能对您有所帮助。 without making the image look weird? 现在这是一个难题,是的,有可能,但我认为您需要检查原始图片的纵横比。
  • 取决于您对自动裁剪图像的重视程度。如果您不介意从 4:3 到 16:9 或其他时间裁剪时人们会掉头,那么我想这是可能的,是的。
  • Resize image in PHP的可能重复

标签: php image-resizing


【解决方案1】:

是否可以让我的程序拍摄任何图像并将其调整大小/重新缩放到 16:9 而不会使图像看起来很奇怪?

是的,是的。我建议你使用ImageMagik原生PHP扩展。

您可以通过以下方式实现您的目标:

  1. 找出当前图像大小 (Imagick::getSize())
  2. 做一些基本的数学运算,找出所需的图像新尺寸。
  3. 将图像裁剪为所需的新尺寸 (Imagick::cropImage())

请注意您的疑虑:

...不让图像看起来很奇怪?

...嗯,这取决于图像和裁剪。 请记住,裁剪任何图像都是破坏性操作,因为您正在“丢弃”图像的一部分。 如果裁剪对您无效(是的,图像可能看起来很奇怪),请考虑将整个原始图像放入 16:9 更大的画布中(然后,您将在左/右或上/下有空白边距)。也可以通过使用 ImageMagik 来实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2016-01-30
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    相关资源
    最近更新 更多