Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.76 KB | None | 0 0
  1. $filename = './'.$fold.'/' . mt_rand(100,999) . date('YmdHis') . mt_rand(100,999) . '.' . $match[1]; //создаем уникальное имя
  2.  
  3. function imageResize(array $src, $fold, $width, $height, $crop=0) {
  4. //обозначиваем папку и копируем исходное
  5.  
  6. if( empty($src['tmp_name']) || !empty($src['error']) || !preg_match('~.(jpe?g|png|gif)$~i', $src['name'], $match) ) {
  7.  
  8. $retimg = "error0";
  9. return $retimg; //если нет файла возвращяем ошибку нуль
  10.  
  11. } else {
  12.  
  13. $filename = './'.$fold.'/' . mt_rand(100,999) . date('YmdHis') . mt_rand(100,999) . '.' . $match[1]; //создаем уникальное имя
  14.  
  15. if (FALSE == move_uploaded_file($src['tmp_name'], $filename)) {
  16. $retimg = "error1";
  17. return $retimg;} // двигаем картинку если ошибка выдаем ошибку один
  18.  
  19. //начинаем ресайз!
  20.  
  21. if(!($info = getimagesize($filename))){ //проверка размеров
  22.  
  23. if(file_exists($filename)) { @unlink($filename); }
  24.  
  25. $retimg = "error2";
  26. return $retimg; //если нет размера возвращяем ошибку дуа
  27. }
  28. $w = $info[0];
  29. $h = $info[1];
  30.  
  31. //еще меньше ? прерываем ресайз !
  32. if($w < $width && $h < $height) {
  33.  
  34. $retimg = $filename;
  35. return $retimg;
  36.  
  37. } else {
  38. //если ресайз нужен то продолжаем!
  39. $type = $match[1] == 'jpg' ? 'jpeg' : $match[1];
  40.  
  41. $create = 'imagecreatefrom' . $type;
  42. $img = $create($filename);
  43. //вычисляем
  44.  
  45. if($crop){
  46. $ratio = max($width/$w, $height/$h);
  47. $h = $height / $ratio;
  48. $x = ($w - $width / $ratio) / 2;
  49. $w = $width / $ratio;
  50. } else {
  51. $ratio = min($width/$w, $height/$h);
  52. $width = $w * $ratio;
  53. $height = $h * $ratio;
  54. $x = 0;
  55. }
  56.  
  57. $new = imagecreatetruecolor($width, $height);
  58.  
  59. // прозрачность для гиф и пинг
  60. if($type == 'gif' || $type == 'png') {
  61. imagecolortransparent( $new, imagecolorallocatealpha($new, 0, 0, 0, 127) );
  62. imagealphablending( $new, false );
  63. imagesavealpha( $new, true );
  64. }
  65. //сохраняем чьл получилось
  66. imagecopyresampled( $new, $img, 0, 0, $x, 0, $width, $height, $w, $h );
  67.  
  68. $save = 'image' . $type;
  69. $save = $save($new, $filename);
  70. $retimg = $filename;
  71. return $retimg;
  72. }
  73. }
  74.  
  75. $size=getimagesize($filename); // тут берем параметры нужной картинки
  76. // определяем сжатие, если нам нужно соблюсти пропорции, установив рамки картинки, т.е. размеры могут картинки не смогут быть больше указанных
  77. $x=$size[0]/300;
  78. $y=$size[1]/200;
  79. $w=300;
  80. $h=$w*$size[1]/$size[0];
  81. if ($x<$y) {
  82. $h=200;
  83. $w=$h*$size[0]/$size[1];
  84. }
  85. // либо ставим жесткие размеры, если нужно уменьшить картинку и обрезать лишнее
  86. /*
  87. $w = 300;
  88. $h = 200;
  89. */
  90. ResizeImage($filename, $w, $h);
  91.  
  92. function ResizeImage($filename, $w, $h) {
  93. $ratio = $w/$h;
  94. $dest_img = imagecreatetruecolor($w, $h);
  95. imagefill($dest_img, 0, 0, 0xFFFFFF);
  96. $size_img = getimagesize($filename);
  97. $src_ratio=$size_img[0]/$size_img[1];
  98. if ($src_ratio>$ratio) {
  99. $old_w=$size_img[0];
  100. $size_img[0]=floor($size_img[1]*$ratio);
  101. $old_w=floor($old_w*$w/$size_img[0]);
  102. }
  103. else {
  104. $old_h=$size_img[1];
  105. $size_img[1]=floor($size_img[0]/$ratio);
  106. $old_h=floor($old_h*$h/$size_img[1]);
  107. }
  108. switch ($size_img['mime']) {
  109. case 'image/jpeg':
  110. $src_img = imagecreatefromjpeg($filename);
  111. break;
  112. case 'image/gif':
  113. $src_img = imagecreatefromgif($filename);
  114. break;
  115. case 'image/png':
  116. $src_img = imagecreatefrompng($filename);
  117. break;
  118. }
  119. imagecopyresampled($dest_img, $src_img, 0, 0, 0, 0, $w, $h, $size_img[0], $size_img[1]);
  120.  
  121. // тут определим новое имя файла (и/или путь) для сохранения
  122. $file_info=pathinfo($filename);
  123. $filename_new = str_replace('.'.$file_info['extension'], '_mini.'.$file_info['extension'], $filename);
  124.  
  125. switch ($size_img['mime']) {
  126. case 'image/jpeg':
  127. imagejpeg($dest_img,$filename_new);
  128. break;
  129. case 'image/gif':
  130. imagegif($dest_img,$filename_new);
  131. break;
  132. case 'image/png':
  133. imagepng($dest_img,$filename_new);
  134. break;
  135. }
  136.  
  137. imagedestroy($dest_img);
  138. imagedestroy($src_img);
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement