使用php调整图像大小

时间:2015-10-15 13:18:54

标签: php

我正在尝试通过在保持纵横比的同时将其设置为200 x 200来调整图像大小。我试图按照http://php.net/manual/en/function.imagecopyresampled.php来尝试实现这一目标。这是我的代码:

<?php
    $directory = "uploads/";
    $images = glob($directory."*.jpeg");
    foreach($images as $filename) {

        // Set a maximum height and width
        $width = 200;
        $height = 200;

        // Get new dimensions
        list($width_orig, $height_orig) = getimagesize($filename);

        $ratio_orig = $width_orig/$height_orig;

        if ($width/$height > $ratio_orig) {
           $width = $height*$ratio_orig;
        } else {
           $height = $width/$ratio_orig;
        }

        // Resample
        $image_p = imagecreatetruecolor($width, $height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

        // Output
        imagejpeg($image_p, null, 100);
    }
?>

我取出了内容类型,因为它给了我一个错误。它不是输出经过调整大小的图像,而是输出一串符号,如下所示:

JFIF�����t��jw��E��4."�DN�9>m���4����P};WI��x"�

有人知道为什么会这样吗?

3 个答案:

答案 0 :(得分:0)

您需要将标题发送到浏览器,以便浏览器能够正确理解您的输出。在脚本中添加以下行:

header('Content-Type: image/jpeg');

答案 1 :(得分:0)

您需要在foreach循环之前拥有header('Content-Type: image/jpeg');

答案 2 :(得分:0)

此代码必须位于文件的最开头:

header('Content-Type: image/jpeg');

上面的代码应该是独立的,你不应该在任何地方都有任何HTML标签,它不应该在任何地方“包含PHP”。