如何在php pdo mysql上传到数据库之前压缩图像而不失去其质量?

时间:2017-12-06 05:48:53

标签: php image

我目前正在从事在线项目工作。用户上传他们的图片,图像将首先存储在服务器文件夹中,例如"上传"目录...并且一旦文件将移动到上传目录中......然后使用mysql查询将路径插入到mysql数据库中。 但问题是......图像需要更长的时间才能加载到网页上...我希望在上传到数据库和服务器之前减小图像大小..

这是我的代码

 System.setProperty("javax.net.ssl.trustStore", path to your cacerts file in your Java folder, inside your hard disk);
        System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
        Properties prop = new Properties();
        prop.setProperty("mail.pop3.starttls.enable", "false");
        prop.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        prop.setProperty("mail.pop3.socketFactory.fallback", "false");
        prop.setProperty("mail.pop3.port", port);
        prop.setProperty("mail.pop3.socketFactory.port", port);
        prop.setProperty("mail.imap.ssl.trust", "*");
        MailSSLSocketFactory sf = new MailSSLSocketFactory();
        sf.setTrustAllHosts(true);
        prop.put("mail.smtp.ssl.socketFactory", sf);

我的查询看起来像..

$upload_dir = 'user_images/'; // upload directory

        $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension

        // valid image extensions
        $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions

        // rename uploading image
        $userpic = rand(1000,1000000).".".$imgExt;

        // allow valid image file formats
        if(in_array($imgExt, $valid_extensions)){           
            // Check file size '5MB'
            if($imgSize < 1000000){

                move_uploaded_file($tmp_dir,$upload_dir.$userpic);

            }
            else{
                $errMSG = "Sorry, your file is too large.";
            }
        }
        else{
            $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";        
        }
    }

2 个答案:

答案 0 :(得分:1)

一般来说,将图像上传到数据库并不是一个好主意 - 数据库会非常迅速地增长,并可能导致性能并在将来维护问题。

使用数据库保存有关图片的元数据,并将图像保存在文件系统中。

答案 1 :(得分:0)

减小尺寸是一个非常普遍的问题,因为有不同的方面:

  • 减小文件系统的大小,即字节
  • 减小尺寸的大小,即像素

要减少字节数:

  • 应用压缩 - 适用于jpg,png。
  • 以正确的格式转换图片 - 因为截图是更好的png,因为照片更好jpg
  • 调整图片尺寸 - 通过互联网查看和发送您不需要很多百万像素
  • 减少颜色数量
  • 删除未使用的Alpha通道
  • 删除EXIF信息(如果不需要)

缩小尺寸:

  • 考虑将要查看图像的主要媒体,即手机与桌面
  • 决定图像最大尺寸的图像,在大多数屏幕上最多可以看到1024像素IMHO