One of my client request an improvement of his current website. He want an uploaded image could be resized automatically so his users no longer bothered with image size problem.

From google result, I found a ready made function for this purpose. In this tutorial I show you how to use this great function for you project.

The resize function.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
function resize_image( $file, $width = 0, $height = 0, $proportional = false, $output = 'file', $delete_original = true )
{
	if ( $height <= 0 &amp;&amp; $width <= 0 ) return false;
 
	$info = getimagesize($file);
	$image = '';
 
	$final_width = 0;
	$final_height = 0;
	list($width_old, $height_old) = $info;
 
   if ($proportional) {
		   if ($width == 0) $factor = $height/$height_old;
		   elseif ($height == 0) $factor = $width/$width_old;
		   else $factor = min ( $width / $width_old, $height / $height_old);
 
		   $final_width = round ($width_old * $factor);
		   $final_height = round ($height_old * $factor);
   } else {
		   $final_width = ( $width <= 0 ) ? $width_old : $width;
		   $final_height = ( $height <= 0 ) ? $height_old : $height;
   }
 
   switch ($info[2]) {
		   case IMAGETYPE_GIF:
				   $image = imagecreatefromgif($file);
		   break;
		   case IMAGETYPE_JPEG:
				   $image = imagecreatefromjpeg($file);
		   break;
		   case IMAGETYPE_PNG:
				   $image = imagecreatefrompng($file);
		   break;
		   default:
				   return false;
   }
 
   $image_resized = imagecreatetruecolor( $final_width, $final_height );
 
   if(($info[2] == IMAGETYPE_GIF) || ($info[2] == IMAGETYPE_PNG)) {
		   $trnprt_indx = imagecolortransparent($image);
 
		   // If we have a specific transparent color
		   if($trnprt_indx >= 0) {
 
				   // Get the original image's transparent color's RGB values
				   $trnprt_color    = imagecolorsforindex($image, $trnprt_indx);
 
				   // Allocate the same color in the new image resource
				   $trnprt_indx    = imagecolorallocate($image_resized, $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue']);
 
				   // Completely fill the background of the new image with allocated color.
				   imagefill($image_resized, 0, 0, $trnprt_indx);
 
				   // Set the background color for new image to transparent
				   imagecolortransparent($image_resized, $trnprt_indx);
 
 
		   }
		   // Always make a transparent background color for PNGs that don't have one allocated already
		   elseif ($info[2] == IMAGETYPE_PNG) {
 
				   // Turn off transparency blending (temporarily)
				   imagealphablending($image_resized, false);
 
				   // Create a new transparent color for image
				   $color = imagecolorallocatealpha($image_resized, 0, 0, 0, 127);
 
				   // Completely fill the background of the new image with allocated color.
				   imagefill($image_resized, 0, 0, $color);
 
				   // Restore transparency blending
				   imagesavealpha($image_resized, true);
		   }
   }
 
   imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $final_width, $final_height, $width_old, $height_old);
 
   if($delete_original) @unlink($file);
 
   switch (strtolower($output)) {
		   case 'browser':
				   $mime = image_type_to_mime_type($info[2]);
				   header("Content-type: $mime");
				   $output = NULL;
		   break;
		   case 'file':
				   $output = $file;
		   break;
		   case 'return':
				   return $image_resized;
		   break;
		   default:
		   break;
   }
 
   switch ($info[2]) {
		   case IMAGETYPE_GIF:
				   imagegif($image_resized, $output);
		   break;
		   case IMAGETYPE_JPEG:
				   imagejpeg($image_resized, $output);
		   break;
		   case IMAGETYPE_PNG:
				   imagepng($image_resized, $output);
		   break;
		   default:
				   return false;
   }
 
   return true;
}

Create a tes.php file.

?Download tes.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
  include "imgresize.php";
 
  print "mulai...";
 
  CopyResize('a.jpg','b.jpg');
 
  print "<p>selesai.";
 
  function CopyResize($src, $dst) {
    $result = @copy($src, $dst);
    if ($result) {
      resize_image($dst, 300, 200, true);
    }
    return $result;
  }
?>

I think The above codes is well self-explained.

Be sure to prepare an image file called a.jpg. Run tes.php then it will create a new file called b.jpg.

Leave a Reply