我正在尝试通过在保持纵横比的同时将其设置为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"�
。
有人知道为什么会这样吗?
答案 0 :(得分:0)
您需要将标题发送到浏览器,以便浏览器能够正确理解您的输出。在脚本中添加以下行:
header('Content-Type: image/jpeg');
答案 1 :(得分:0)
您需要在foreach循环之前拥有header('Content-Type: image/jpeg');
答案 2 :(得分:0)
此代码必须位于文件的最开头:
header('Content-Type: image/jpeg');
上面的代码应该是独立的,你不应该在任何地方都有任何HTML标签,它不应该在任何地方“包含PHP”。