使用php将任何给定图像缩放/调整为16:9

时间:2018-04-12 10:39:19

标签: php image-resizing

我限制我的程序只接受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);

1 个答案:

答案 0 :(得分:1)

  

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

是的,确实如此。我建议你使用ImageMagik本机PHP扩展。

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

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

      

    ...没有让图像看起来很奇怪?

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