PHP 调整图像大小
可能的重复:
有人可以建议 php 中最好的图像调整大小脚本吗?< /a>
对于 PHP 中的图像处理或文件处理,我仍然是新手。
希望您能提供有关以下内容的任何意见,
我使用简单的 html 表单发布图像文件并通过 php 上传。 当我尝试更改代码以适应更大的文件(即调整大小)时,我收到错误。 一直在网上搜索,但找不到任何真正简单的东西。
$size = getimagesize($_FILES['image']['tmp_name']);
//compare the size with the maxim size we defined and print error if bigger
if ($size == FALSE)
{
$errors=1;
}else if($size[0] > 300){ //if width greater than 300px
$aspectRatio = 300 / $size[0];
$newWidth = round($aspectRatio * $size[0]);
$newHeight = round($aspectRatio * $size[1]);
$imgHolder = imagecreatetruecolor($newWidth,$newHeight);
}
$newname= ROOTPATH.LOCALDIR."/images/".$image_name; //image_name is generated
$copy = imagecopyresized($imgHolder, $_FILES['image']['tmp_name'], 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
move_uploaded_file($copy, $newname); //where I want to move the file to the location of $newname
我得到的错误是:
imagecopyresized():提供的参数 不是有效的图像资源
感谢
感谢您的所有输入,我已将其更改为此
$oldImage = imagecreatefromstring(file_get_contents($_FILES['image']['tmp_name']));
$copy = imagecopyresized($imgHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
if(!move_uploaded_file($copy, $newname)){
$errors=1;
}
未收到 PHP 日志错误但未保存:(
有什么想法吗?
再次感谢
结果
以下作品 。
$oldImage = imagecreatefromjpeg($img);
$imageHolder = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresized($imageHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($imageHolder, $newname, 100);
谢谢大家的帮助
Possible Duplicate:
Can anybody suggest the best image resize script in php?
I'm still a newbie regarding image handling or file handling for that matter in PHP.
Would appreciate any input regarding the following
I post an image file using a simple html form and upload it via php.
When i try and alter my code to accomodate larger files (i.e. resize) I get an error.
Have been searching online but cant find anything really simple.
$size = getimagesize($_FILES['image']['tmp_name']);
//compare the size with the maxim size we defined and print error if bigger
if ($size == FALSE)
{
$errors=1;
}else if($size[0] > 300){ //if width greater than 300px
$aspectRatio = 300 / $size[0];
$newWidth = round($aspectRatio * $size[0]);
$newHeight = round($aspectRatio * $size[1]);
$imgHolder = imagecreatetruecolor($newWidth,$newHeight);
}
$newname= ROOTPATH.LOCALDIR."/images/".$image_name; //image_name is generated
$copy = imagecopyresized($imgHolder, $_FILES['image']['tmp_name'], 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
move_uploaded_file($copy, $newname); //where I want to move the file to the location of $newname
The error I get is:
imagecopyresized(): supplied argument
is not a valid Image resource in
Thanks in advance
Thanks for all your input, i've changed it to this
$oldImage = imagecreatefromstring(file_get_contents($_FILES['image']['tmp_name']));
$copy = imagecopyresized($imgHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $size[0], $size[1]);
if(!move_uploaded_file($copy, $newname)){
$errors=1;
}
Not getting a PHP log error but its not saving :(
Any ideas?
Thanks again
Result
Following works.
$oldImage = imagecreatefromjpeg($img);
$imageHolder = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresized($imageHolder, $oldImage, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
imagejpeg($imageHolder, $newname, 100);
Thanks for everyones help
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
imagecopyresized
将图像资源作为其第二个参数,而不是文件名。您需要先加载该文件。如果您知道文件类型,则可以使用imagecreatefromFILETYPE
来加载它。例如,如果它是 JPEG,请使用 imagecreatefromjpeg 并传递文件名 - 这将返回图像资源。如果您不知道文件类型,也不会丢失一切。您可以将文件作为字符串读取,并使用 imagecreatefromstring(自动检测文件类型)加载它,如下所示:
imagecopyresized
takes an image resource as its second parameter, not a file name. You'll need to load the file first. If you know the file type, you can useimagecreatefromFILETYPE
to load it. For example, if it's a JPEG, useimagecreatefromjpeg
and pass that the file name - this will return an image resource.If you don't know the file type, all is not lost. You can read the file in as a string and use
imagecreatefromstring
(which detects file types automatically) to load it as follows:$_FILES['image']['tmp_name']
是路径而不是图像资源。您必须使用 imagecreatefrom*() 函数之一来创建资源。$_FILES['image']['tmp_name']
is path not image resource. You have to use one of imagecreatefrom*() functions to create resource.这是我保存缩略图的实现:
调整大小并保存功能:
用法:
Here is my implementation of saving a thumbnail picture:
Resize and save function:
Usage:
我使用 ImageMagick 来处理类似的事情。看看它是多么简单!
我的脚本之一的示例:
然后您可以使用 getImageGeometry()< /a> 获取宽度和高度。
例如:
另外,使用
scaleImage(300,0)
意味着ImageMagick会根据宽高比自动计算高度。I use ImageMagick for stuff like that. Look how much simpler it is!
An example from one of my scripts:
You could then use getImageGeometry() to obtain the width and height.
For example:
Also, using
scaleImage(300,0)
means that ImageMagick automatically calculates the height based on the aspect ratio.我正在做类似的事情。我尝试过 Ghostscript 和 ImageMagic。它们是很好的工具,但需要一些时间来设置。我最终在 Snow Leopard 服务器上使用了“sips”。不确定它是否内置于 Linux 服务器中,但如果您需要快速完成某件事,这是我发现的更快的解决方案。
I was working on sth similar. I tried Ghostscript and ImageMagic. They are good tools but takes a but of time to set up. I ended up using 'sips' on a Snow Leopard server. Not sure if it's built in to Linux server but it's the faster solution I have found if you need sth done quick.