Загрузка и обработка картинок

  1. <?php
  2.  
  3. function img_resize( $tmpname, $size, $save_dir, $save_name )
  4. {
  5. $save_dir .= ( substr($save_dir,-1) != "/") ? "/" : "";
  6. $gis = GetImageSize($tmpname);
  7. $type = $gis[2];
  8. switch($type)
  9. {
  10. case "1": $imorig = imagecreatefromgif($tmpname); break;
  11. case "2": $imorig = imagecreatefromjpeg($tmpname);break;
  12. case "3": $imorig = imagecreatefrompng($tmpname); break;
  13. default: $imorig = imagecreatefromjpeg($tmpname);
  14. }
  15.  
  16. $x = imageSX($imorig);
  17. $y = imageSY($imorig);
  18. if($gis[0] <= $size){
  19. $av = $x;
  20. $ah = $y;
  21. } else {
  22. $yc = $y*1.3333333;
  23. $d = $x>$yc?$x:$yc;
  24. $c = $d>$size ? $size/$d : $size;
  25. $av = $x*$c; //высота исходной картинки
  26. $ah = $y*$c; //длина исходной картинки
  27. }
  28. $im = imagecreate($av, $ah);
  29. $im = imagecreatetruecolor($av,$ah);
  30. if (imagecopyresampled($im,$imorig , 0,0,0,0,$av,$ah,$x,$y))
  31. if (imagejpeg($im, $save_dir.$save_name))
  32. return true;
  33. else
  34. return false;
  35. }
  36.  
  37. $uploaddir = './fls/';
  38. if(empty($_POST)){
  39. echo '<div><form action="" method="post" enctype="multipart/form-data"><input type="file" name="uploadfile" /><br/>
  40. <input type="submit" name="send" value="Отправить!"/></form></div>';
  41. } else {
  42. $type = $_FILES['uploadfile']['type'];
  43. if($type == "image/gif" or $type == "image/png" or $type == "image/jpeg") {
  44. echo "<h4>Допустимый формат файла</h4>";
  45. } else {
  46. echo "<h4>Недопустимый формат файла</h4>";
  47. exit;
  48. }
  49. if(!is_dir($uploaddir)) {
  50. mkdir($uploaddir,0777,TRUE);
  51. }
  52. $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']);
  53. if(copy($_FILES['uploadfile']['tmp_name'], $uploadfile)) {
  54. echo "<h4>Файл успешно загружен на сервер</h4>";
  55. } else {
  56. echo "<h4>Произошла ошибка! Не удалось загрузить файл на сервер!</h4>";
  57. exit;
  58. }
  59.  
  60. $name_orig = basename($_FILES['uploadfile']['name']);
  61. $date = date("YmdHis");
  62. $id = '666'; // индификатор чего угодно (user || count) //
  63. if(isset($_POST['send']))
  64. {
  65. $tmpname = $_FILES['uploadfile']['tmp_name'];
  66. @img_resize( $tmpname , 300 , $uploaddir , $name_orig."_".$date."_".$id.".jpg");
  67. @img_resize( $tmpname , 120 , $uploaddir , $name_orig."_".$date."_".$id."_small.jpg");
  68. @img_resize( $tmpname , 60 , $uploaddir , $name_orig."_".$date."_".$id."_verysmall.jpg");
  69. }
  70. else {
  71. echo "Обрабатывать нечего";
  72. }
  73. }
  74. ?>
Загружает картинку, сохраняет оригинал и три превьюшки разного размера. Думаю найдется у кого применение данному решению, функция найдена на просторах интернета :)

Реклама

Мы в соцсетях

tw tg yt gt