使用mysqli

时间:2018-02-28 16:09:57

标签: php image compression

我正在尝试压缩来自我的数据库的所有图像,从数据库调用的每个图像都由变量$ oldImage表示,然后压缩它并替换同一文件夹中具有相同名称的图像(如果我放入相同的文件,则当前有效)每个$ source_img和$ compress_img中的image_name.jpg。这是我当前的代码:

<?

include "database.php";
         $raw_results = mysqli_query($con, "SELECT * FROM products") or 
die(mysqli_error($con));
if(mysqli_num_rows($raw_results) > 0){
while($results = mysqli_fetch_array($raw_results)){
?>

<?php 

function compress($source, $destination, $quality) {

    $info = getimagesize($source);

    if ($info['mime'] == 'image/jpeg') 
        $image = imagecreatefromjpeg($source);

    elseif ($info['mime'] == 'image/gif') 
        $image = imagecreatefromgif($source);

    elseif ($info['mime'] == 'image/png') 
        $image = imagecreatefrompng($source);

    imagejpeg($image, $destination, $quality);

    return $destination;
}

$oldImage = $results['img'];

$source_img = "../img/products/$oldImage";
$destination_img = "../img/products/$oldImage";

$d = compress($source_img, $destination_img, 90);

?>

<?
  }

   }else{
            echo "No results";
        }

?>

$ oldImage变量正确获取第一个图像的名称,但由于此错误而停止: 致命错误:无法在/ home / www / **中重新声明compress()(之前在/home/www/********.co.uk/*****/compress.php:19中声明)第19行的****** / ***** / compress.php

1 个答案:

答案 0 :(得分:0)

您应该尝试https://piio.co,因此您不需要手动压缩图片,考虑到不同的浏览器格式和移动设备,这会有很多缺点。它会根据原始图像自动执行您需要做的所有事情。

集成非常简单,您只需将<img src="image.jpg" />更改为<img data-piio="image.jpg />并在HTML中包含JS库。您不需要运行cron-job,编写现在正在执行的代码或任何调整大小和压缩图像的内容,Piio会自动为您执行此操作。

图书馆还会根据用户设备自动调整每个屏幕尺寸的图像尺寸,因此您不必自己为同一图像生成多种格式。

文档位于https://piio.co/docs

相关问题