2017-02-09 3 views
0

Я хочу спросить, как загрузить изображение с сайта клиента Opencart (например, изображение профиля) и изменить его размер? Мой код может загружать изображение, но он не может изменить размер моего изображения. Если у меня есть файл с файлом 5 Мб, я хочу сжать файл примерно до 200 КБ. Я уже пробовал функцию PHP imagejpeg, но он не работает, он не будет загружать в image.Here в мой код:Opencart Загрузить изображение с страницы клиента

//Check the post 
if((!empty($_FILES)) && ($_FILES['photo']['size'] > 0) && ($_FILES['photo']['error'] == 0)){ 
//check extension 
    $fileType = strtolower(pathinfo(basename($this->request->files['photo']['name']), PATHINFO_EXTENSION)); 
    if($fileType != "jpeg" && $fileType != "jpg" && $fileType != "png" && $fileType != "bmp"){ 
     echo "<script> 
     alert('Extension allowed : jpeg, jpg, png, dan bmp. Your extension: ".$fileType."'); 
     window.location.href='javascript: window.history.go(-1)'; 
    </script>"; 
     die(); 
    } 
    //check image size 
    if($this->request->files['photo']['size'] > 5000000){ 
     echo "<script> 
     alert('File too big, max. 5000000 (5MB). Your file: ".$this->request->files['photo']['size']."'); 
     window.location.href='javascript: window.history.go(-1)'; 
    </script>"; 
     die(); 
    } 
    $fileName = $this->request->files['photo']['name']; 
    $newimg = date('YmdHis', time()); 
    $arr = explode(".", $fileName); 
    $extension = strtolower(array_pop($arr)); 
    $foto = $newimg.".".$extension; 
    $uploads_dir = 'image/data/profile/'; 
    if (is_uploaded_file($this->request->files['photo']['tmp_name'])) { 
    //i want to shrink image size before this upload 
     move_uploaded_file($this->request->files['photo']['tmp_name'], $uploads_dir.$foto); 
    } 
} 
else{ 
    echo "<script> 
     alert('Please choose a photo'); 
     window.location.href='javascript: window.history.go(-1)'; 
    </script>"; 
     die(); 
    $foto = ''; 
} 

ответ

0

Вы можете попробовать следующий фрагмент кода, чтобы уменьшить размер изображения во время загрузки изображения -

<?php 
    function reduce_image_size($source_url, $destination_url, $quality) { 

     $info = getimagesize($source_url); 

     if ($info['mime'] == 'image/jpeg') 
      $image = imagecreatefromjpeg($source_url); 
     else if ($info['mime'] == 'image/gif') 
      $image = imagecreatefromgif($source_url); 
     else if ($info['mime'] == 'image/png') 
      $image = imagecreatefrompng($source_url); 

     imagejpeg($image, $destination_url, $quality); 
     return $destination_url; 
    } 

    if($_POST) { 
     if ($_FILES["file"]["error"] > 0) { 
      $output = $_FILES["file"]["error"]; 
     } else if (($_FILES["file"]["type"] == "image/gif") || 
       ($_FILES["file"]["type"] == "image/jpeg") || 
       ($_FILES["file"]["type"] == "image/png") || 
       ($_FILES["file"]["type"] == "image/pjpeg")) { 

      $destination = 'reduced.jpg'; 
      $filename = reduce_image_size($_FILES["file"]["tmp_name"], $destination, 80); 
      $output = 'Done.'; 
     } else { 
      $output = "Uploaded image should be jpg or gif or png."; 
     } 

     echo $output . " <a href=''>Reload</a>"; die; 
    } 
?> 
<html> 
    <head> 
     <title>Reduce Image Size with PHP</title> 
    </head> 
    <body> 
<form action="" name="img_compress" id="img_compress" method="post" enctype="multipart/form-data"> 
       Upload: <input type="file" name="file" id="file"/> 
       <input type="submit" name="submit" id="submit" class="submit btn-success"/> 
    </form> 
    </body> 
</html>