PHP 中的图像尺寸缩小

发布于 2024-08-09 17:57:52 字数 135 浏览 3 评论 0原文

在诸如此错误的情况下:

致命错误:内存不足(已分配 31981568)(尝试分配3264 字节)

在进入此阶段之前,我可以先使用 GD 库来减小其文件大小吗?

In cases such as this error:

Fatal error: Out of memory (allocated
31981568) (tried to allocate 3264
bytes)

Can I use the GD lib to reduce its file size first before getting to this stage?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

困倦 2024-08-16 17:57:52

简而言之:不。

GD 使用内存来减小图像的大小,如果图像太大,则超出内存限制并给出错误。

您可以计算图像可以有多大,以便可以保持在一定的内存限制范围内:http: //www.dotsamazing.com/en/labs/phpmemorylimit

一种选项(尽管在共享主机中不受欢迎)是增加内存限制,您可以使用 ini_set() 或在 .htaccess 文件中执行此操作。请检查您的主机是否允许这样做。如果您有自己的主机,请相应配置 Apache。

一个(也提到的)选项是使用 Imagemagick,这是一个在服务器上运行的程序,您可以调用它来为您调整大小。该程序的内存限制可能与 PHP 的内存限制不同,但也可能存在限制。请联系您的房东以获取更多信息。

In short: no.

GD uses memory to reduce the size of an image, if the image is too big the memory limit is exceeded and an error is given.

You can calculate how big an image can be so you can stay under a certain memory limit here: http://www.dotsamazing.com/en/labs/phpmemorylimit

An option, although an unpopular one with shared hosts, is increasing the memory limit, you can do this with ini_set() or in an .htaccess file. Please check if your host allows this. If you have your own host, configure Apache accordingly.

An (also mentioned) option is using Imagemagick, a program that runs on the server that you can call to do the resizing for you. The memory limit for this program can be different than the one for PHP, but there probably will be a limit as well. Contact your host for more info.

叹倦 2024-08-16 17:57:52

您可以设置更高的内存限制。

ini_set('memory_limit', $file_size * 2);

因为如果你想使用GD减小大小,你仍然需要为该文件分配内存,然后才能减小大小。

另请记住为图像上传设置文件大小限制。

您可以在读取/打开文件之前使用 filesize() 函数检查文件大小。

You can instead set a higher memory limit.

ini_set('memory_limit', $file_size * 2);

Because if you want to reduce the size using GD, you still need to allocate memory for that file before you can reduce the size.

Also remember to set a file size limit to your image uploads.

You can use the filesize() function to check the file size before reading/opening the file.

呆头 2024-08-16 17:57:52

您是否使用 PHP 脚本从磁盘读取文件?

Are you reading a file from disk with a PHP script?

往日情怀 2024-08-16 17:57:52

这显然是您上一篇文章的延续。如果我没记错的话,这是您正在使用的上传图像?如果是的话,图像的大小是多少?如果它真的很大,您应该考虑限制图像上传的大小。

This is obviously continuing from your previous post. If I remember rightly it's an uploaded image you're working with? If so what is the size of the image? If it's really large you should consider limiting the size of image uploads.

爱的那么颓废 2024-08-16 17:57:52

当您希望内存做的事情超出其能力时,就会发生这种情况。您可能想查看 imagemagick ,因此不必通过 PHP 调整大小,只需向 imagemagick 发送请求来调整大小。

或者更简单的方法是通过 ini 增加 php 脚本的每个脚本的内存限制。

That would happen when u want the memory to do more than it can .. you might want to look into imagemagick , so instead of resizing via PHP just send request to imagemagick to do the resizing.

Or the easier way would be to increase the memory limit per script of php scripts via ini.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文