使用PHP进行上传后的简单图片调整大小

5
我找了一段时间,发现了一些非常混乱和复杂的东西,我无法让它们正常工作。
我正在使用Joomla的Chronoforms制作一个带有上传文件脚本的表单,它可以将图像上传到服务器而没有任何问题,目前为止还不错。
我需要对上传的图像进行调整大小,最好的情况是在将其上传到服务器之前就调整图像大小,是否有这样的方法?
谢谢。

2
手册页面上的imagecopyresize()示例应该适用于您。 - Pekka
5个回答

15

1

我在几个项目中使用了PHPThumb,发现它易于使用且资源占用较小。您可以阅读文档以获取更多信息,但这相当容易:

$thumb = PhpThumbFactory::create('/path/to/source/image.png');

$thumb->resize(100, 100);

$thumb->save('/path/where/you/want/resized/image.png');

0

这里是我创建的一个简单的调整大小库,可以在Github上找到

适用于任何框架。

以下是如何使用该库的示例:

// Include PHP Image Magician library
require_once('php_image_magician.php');

// Open JPG image
$magicianObj = new imageLib('racecar.jpg');

// Resize to best fit then crop (check out the other options)
$magicianObj -> resizeImage(100, 200, 'crop');

// Save resized image as a PNG (or jpg, bmp, etc)
$magicianObj -> saveImage('racecar_small.png');

0

[这个例子] 就是你要找的 imagecopyresampled

<?php
// The file
$filename = 'test.jpg';
$percent = 0.5;

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

// Get new dimensions
list($width, $height) = getimagesize($filename);
$new_width = $width * $percent;
$new_height = $height * $percent;

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

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

1
在我看来,这是错误的方法。PHP有一个很棒的图像处理库,在传输之前就可以完成他所需的操作。虽然这种方法在技术上是正确的,但需要更多的带宽,并给用户代理带来更大的压力。 - FlyingGuy
嗯,我明白了。我会在空闲时间里尝试改进这个答案。 - Herr
2
@FlyingGuy - 答案还没有被编辑,所以我不知道你在说什么,但这确实是唯一的本地PHP图像库(GD),并且它在传输之前确实会重新采样图像。实际上,这个答案根本与客户端无关...那么..你在说什么? - I wrestled a bear once.

0

Chronoforms(v4版本)支持此功能!(我也看到过旧版本的一些痕迹,甚至是1.3版本。)

我只需将图像调整大小操作(从实用工具下)拖动到所需的表单事件下(在提交时下)即可。

注意:这不是用于客户端调整大小。为此,您需要一个JavaScript表单上传程序包,它可以在上传之前和期间显示缩略图。它们通常很难集成。(并且使用那些客户端缩略图同时上传与原始图像需要一些更高级的--因此更复杂的--东西;我会说这很少值得额外的痛苦,只需在服务器上再次生成缩略图,并考虑所有那些比Web开发人员生活更艰难的非洲贫困儿童。;))


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接