【问题标题】:How to do I reduce/compress the size of a image before uploading to MySQL Database如何在上传到 MySQL 数据库之前缩小/压缩图像的大小
【发布时间】:2025-12-28 03:00:10
【问题描述】:

如果上传的图片超过 1mb,我需要知道如何处理此代码以减小/压缩上传图片的大小。

<form enctype="multipart/form-data" action='upcomg.php' method="post" name="changer">
<input name="MAX_FILE_SIZE" value="83886080" type="hidden">
<label>Please choose a file:</label><input name="image" accept="image/jpeg" type="file">
<input value="Submit" type="submit">

<?php
    if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) {

    $tmpName = $_FILES['image']['tmp_name'];

    $fp = fopen($tmpName, 'r');
    $data = fread($fp, filesize($tmpName));
    $data = addslashes($data);
    fclose($fp);


    $query = "INSERT INTO ### ";
    $query .= "(##) VALUES ('$data')";
    $results = mysql_query($query, $link);

    // Print results
    print "Thank you, your file has been uploaded.";

    }
    else {
    print "No image selected/uploaded";
    }

    // Close our MySQL Link
    mysql_close($link);
?> 

【问题讨论】:

  • 不要将图像存储在数据库中

标签: php mysql image upload compression


【解决方案1】:

首先,我不会将原始图像数据存储在数据库中。将其存储在常规的旧静态文件中会更快,并且如果您的数据库离线也不会中断。

但话虽如此,你可以在里面放这样的东西:

$file = $_FILES['image']['tmp_name'];
if ( $_FILES['image']['size'] > 1024*1024 )
    $file = compress($file);

您已经有压缩方法了吗?如果没有,我也可以帮助你,但你可能想看看Imagick,因为它已经内置了压缩功能。

【讨论】:

  • 你能帮我在这段代码中使用imagick吗,因为我必须使用数据库。
  • 只是好奇,为什么需要将这些存储在数据库中?是的,我可以帮助您使用 Imagick,但首先阅读文档并运行一些测试代码,如果您无法弄清楚,请告诉我。几乎每个 PHP 框架都有很好的文档记录,因此应该像阅读说明一样简单。
  • 我有使用数据库,因为我无法上传文件,因为诸如“[function.move-uploaded-file]:无法打开流:权限被拒绝”之类的权限错误。如果你能帮助我,那就太好了。
  • 所以只要改变上传目的地的权限,就简单多了。
  • 我尝试过,但我得到了类似 '500 'SITE CHMOD 777 ver_2': command not understand'