@@ -20,8 +20,10 @@ public static void main(String[] args) {
20
20
img = toGrayScale (img );
21
21
//img = toGrayScale2(img);
22
22
display (img );
23
- img = pixelate (img );
23
+ // img = pixelate(img);
24
24
//img = pixelate2(img, 3);
25
+ //img = resize(img, 150);
26
+ img = blur (img );
25
27
display (img );
26
28
}
27
29
}
@@ -116,6 +118,41 @@ public static BufferedImage pixelate2 (BufferedImage img, int n) {
116
118
return pixImg ;
117
119
}
118
120
121
+ // scale a grayscale image
122
+ public static BufferedImage resize (BufferedImage img , int newHeight ) {
123
+ System .out .println (" Scaling image." );
124
+ double scaleFactor = (double ) newHeight /img .getHeight ();
125
+ BufferedImage scaledImg = new BufferedImage (
126
+ (int )(scaleFactor *img .getWidth ()), newHeight , BufferedImage .TYPE_BYTE_GRAY );
127
+ AffineTransform at = new AffineTransform ();
128
+ at .scale (scaleFactor , scaleFactor );
129
+ AffineTransformOp scaleOp = new AffineTransformOp (at , AffineTransformOp .TYPE_BILINEAR );
130
+ return scaleOp .filter (img , scaledImg );
131
+ }
132
+
133
+ // apply Gaussian blur to a grayscale image
134
+ public static BufferedImage blur (BufferedImage img ) {
135
+ BufferedImage blurImg = new BufferedImage (
136
+ img .getWidth ()-2 , img .getHeight ()-2 , BufferedImage .TYPE_BYTE_GRAY );
137
+ int pix = 0 ;
138
+ for (int y =0 ; y <blurImg .getHeight (); y ++) {
139
+ for (int x =0 ; x <blurImg .getWidth (); x ++) {
140
+ pix = (int )(4 *(img .getRGB (x +1 , y +1 )& 0xFF )
141
+ + 2 *(img .getRGB (x +1 , y )& 0xFF )
142
+ + 2 *(img .getRGB (x +1 , y +2 )& 0xFF )
143
+ + 2 *(img .getRGB (x , y +1 )& 0xFF )
144
+ + 2 *(img .getRGB (x +2 , y +1 )& 0xFF )
145
+ + (img .getRGB (x , y )& 0xFF )
146
+ + (img .getRGB (x , y +2 )& 0xFF )
147
+ + (img .getRGB (x +2 , y )& 0xFF )
148
+ + (img .getRGB (x +2 , y +2 )& 0xFF ))/16 ;
149
+ int p = (255 <<24 ) | (pix <<16 ) | (pix <<8 ) | pix ;
150
+ blurImg .setRGB (x ,y ,p );
151
+ }
152
+ }
153
+ return blurImg ;
154
+ }
155
+
119
156
}
120
157
121
158
0 commit comments