Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Ktora funkcja lepsza? dlaczego?
Forum PHP.pl > Forum > Przedszkole
viamarimar
Ktora waszym zdaniem funkcja jest lepsza i dlaczego?
Funkcja1:
  1. function resize2($img, $w, $h, $newfilename) {
  2.  
  3. //Check if GD extension is loaded
  4. if (!extension_loaded('gd') && !extension_loaded('gd2')) {
  5. trigger_error("GD is not loaded", E_USER_WARNING);
  6. return false;
  7. }
  8.  
  9. //Get Image size info
  10. $imgInfo = getimagesize($img);
  11. switch ($imgInfo[2]) {
  12. case 1: $im = imagecreatefromgif($img); break;
  13. case 2: $im = imagecreatefromjpeg($img); break;
  14. case 3: $im = imagecreatefrompng($img); break;
  15. default: trigger_error('Unsupported filetype!', E_USER_WARNING); break;
  16. }
  17.  
  18. //If image dimension is smaller, do not resize
  19. if ($imgInfo[0] <= $w && $imgInfo[1] <= $h) {
  20. $nHeight = $imgInfo[1];
  21. $nWidth = $imgInfo[0];
  22. }else{
  23. //yeah, resize it, but keep it proportional
  24. if ($w/$imgInfo[0] > $h/$imgInfo[1]) {
  25. $nWidth = $w;
  26. $nHeight = $imgInfo[1]*($w/$imgInfo[0]);
  27. }else{
  28. $nWidth = $imgInfo[0]*($h/$imgInfo[1]);
  29. $nHeight = $h;
  30. }
  31. }
  32. $nWidth = round($nWidth);
  33. $nHeight = round($nHeight);
  34.  
  35. $newImg = imagecreatetruecolor($nWidth, $nHeight);
  36.  
  37. /* Check if this image is PNG or GIF, then set if Transparent*/
  38. if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){
  39. imagealphablending($newImg, false);
  40. imagesavealpha($newImg,true);
  41. $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
  42. imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
  43. }
  44. imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);
  45.  
  46. //Generate the file, and rename it to $newfilename
  47. switch ($imgInfo[2]) {
  48. case 1: imagegif($newImg,$newfilename); break;
  49. case 2: imagejpeg($newImg,$newfilename); break;
  50. case 3: imagepng($newImg,$newfilename); break;
  51. default: trigger_error('Failed resize image!', E_USER_WARNING); break;
  52. }
  53.  
  54. return $newfilename;
  55. }

Funkcja2:
  1. function resize($newWidth, $targetFile, $originalFile) {
  2.  
  3. $info = getimagesize($originalFile);
  4. $mime = $info['mime'];
  5.  
  6.  
  7. switch ($mime) {
  8. case 'image/jpeg':
  9. $image_create_func = 'imagecreatefromjpeg';
  10. $image_save_func = 'imagejpeg';
  11. $new_image_ext = 'jpg';
  12. break;
  13.  
  14. case 'image/png':
  15. $image_create_func = 'imagecreatefrompng';
  16. $image_save_func = 'imagepng';
  17. $new_image_ext = 'png';
  18. break;
  19.  
  20. case 'image/gif':
  21. $image_create_func = 'imagecreatefromgif';
  22. $image_save_func = 'imagegif';
  23. $new_image_ext = 'gif';
  24. break;
  25.  
  26. default:
  27. throw new Exception('Unknown image type.');
  28. }
  29.  
  30. $img = $image_create_func($originalFile);
  31. list($width, $height) = getimagesize($originalFile);
  32.  
  33. $newHeight = ($height / $width) * $newWidth;
  34. $tmp = imagecreatetruecolor($newWidth, $newHeight);
  35. imagecopyresampled($tmp, $img, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);
  36.  
  37. if (file_exists($targetFile)) {
  38. unlink($targetFile);
  39. }
  40. $image_save_func($tmp, $targetFile);
  41. }
Damonsson
Funkcja2, ponieważ da się ją przeczytać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.