2016-02-04 2 views
0

Я всегда сжимаю изображения с http://compressjpeg.com/, прежде чем загружать их, это не очень практично. Я хочу сделать компрессор, как http://compressjpeg.com/ с php.Как сжать изображения без функции?

я этот код

<?php 
require '../../db/sessions.php'; 
require '../../db/ds.php'; 
$path = "../../image/color/aqua/"; 


    $valid_formats = array("jpg", "png", "gif", "bmp"); 
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
     { 
      $name = $_FILES['aqua-example']['name']; 
      $size = $_FILES['aqua-example']['size']; 
      $code = $_POST['aqua-code']; 

      if(strlen($name)) 
       { 
        list($txt, $ext) = explode(".", $name); 
        if(in_array($ext,$valid_formats)) 
        { 
        if($size<(1024*1024)) 
         { 
          $ext = "jpg"; 
          $actual_image_name = $code.".".$ext; 
          $tmp = $_FILES['aqua-example']['tmp_name']; 
          if(move_uploaded_file($tmp, $path.$actual_image_name)) 
           { 

            $query = "UPDATE waiting_item SET aqua='$actual_image_name' WHERE id='$code'"; 
            $res = $mysqli->query($query); 
            echo "<img src='/image/color/aqua/".$actual_image_name."' width='400' height='400' class='ua6m u766 ".$actual_image_name."'>"; 

           } 
          else 
           echo "failed"; 
         } 
         else 
         echo "Image file size max 1 MB";      
         } 
         else 
         echo "Invalid file format.."; 
       } 

      else 
       echo "Please select image..!"; 

      exit; 
     } 
?> 

Есть ли способ сжатия без использования функции? Возможно, это был слишком много кода. И как создать два изображения разных размеров? например изображение A=900px x 600px и B=120px x 500px? Благодаря

EDITED

<?php 
require '../../db/sessions.php'; 
require '../../db/ds.php'; 
$path = "../../image/color/aqua/"; 


    $valid_formats = array("jpg", "png", "gif", "bmp"); 
    if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
     { 
      $name = $_FILES['aqua-example']['name']; 
      $size = $_FILES['aqua-example']['size']; 
      $code = $_POST['aqua-code']; 

      if(strlen($name)) 
       { 
        list($txt, $ext) = explode(".", $name); 
        if(in_array($ext,$valid_formats)) 
        { 
        if($size<(1024*1024)) 
         { 

          $ext = "jpg"; 
          $actual_image_name = $code.".".$ext; 
          $tmp = $_FILES['aqua-example']['tmp_name']; 
          if(move_uploaded_file($tmp, $path.$actual_image_name)) 
           { 
// --------------------------------- THIS ----------------------------- // 


    function Img_Resize($paths) { 

     $x = getimagesize($paths);    
     $width = $x['0']; 
     $height = $x['1']; 

     $rs_width = $width/2; 
     $rs_height = $height/2; 

     switch ($x['mime']) { 
      case "image/gif": 
      $img = imagecreatefromgif($paths); 
      break; 
      case "image/jpeg": 
      $img = imagecreatefromjpeg($paths); 
      break; 
      case "image/png": 
      $img = imagecreatefrompng($paths); 
      break; 
     } 

     $img_base = imagecreatetruecolor($rs_width, $rs_height); 
     imagecopyresized($img_base, $img, 0, 0, 0, 0, $rs_width, $rs_height, $width, $height); 

     $path_info = pathinfo($paths);  
     switch ($path_info['extension']) { 
      case "gif": 
      imagegif($img_base, $paths); 
      break; 
      case "jpeg": 
      imagejpeg($img_base, $paths); 
      break; 
      case "png": 
      imagepng($img_base, $paths); 
      break; 
     } 

    } 

$img = Img_Resize($path,$actual_image_name); 

// ------------------ end ----------------------------- // 

            $query = "UPDATE waiting_item SET aqua='$actual_image_name' WHERE id='$code'"; 
            $res = $mysqli->query($query); 
            echo "<img src='/image/color/aqua/".$actual_image_name."' width='400' height='400' class='ua6m u766 ".$actual_image_name."'>"; 

           } 
          else 
           echo "failed"; 
         } 
         else 
         echo "Image file size max 1 MB";      
         } 
         else 
         echo "Invalid file format.."; 
       } 

      else 
       echo "Please select image..!"; 

      exit; 
     } 
?> 
+0

Извините, непонятно, что вы на самом деле спрашиваете. Что вы подразумеваете под «без использования функции»? Конечно, вы не сможете делать графические преобразования без использования каких-либо функций библиотеки. И: почему это должно быть проблемой? – arkascha

+0

На самом деле я не вижу никакого преобразования («сжатие», как вы его называете ...) вообще в коде выше. Вы просто переименовываете некоторые файлы на основе очень ненадежного «обнаружения типа». – arkascha

+0

как этот 'функция compress ($ source, $ destination, $ quality) {.. bla bla bla .....}' что не может, если не использовать его? то как при использовании с функцией? – Rahayu

ответ

0

Я думаю, вам нужно установить php5-gd расширение и использовать его так:
- detect image type and create image
- затем изменить с помощью imagecopyresized()

Я хотел бы рекомендовать изменить размер с два этапа, например:
- у нас есть изображение 1920x1080
- нам нужно сделать эскиз 160x90
- изменение размера с помощью imagecopyresized() для временного изображения с размером 640x360
- размер предыдущего результата целевого размера с помощью imagecopyresampled() 160x90

цели для этого двух шагов tranforms является качеством целевого изображение будет намного лучше, чем использовать только imagecopyresized, и быстрее, чем использовать только imagecopyresampled