資源簡介
java模擬實現圖片馬賽克效果,馬賽克設置越大圖片越模糊。

代碼片段和文件信息
package?com.popo.tools;
import?java.awt.Color;
import?java.awt.Graphics;
import?java.awt.Image;
import?java.awt.image.BufferedImage;
import?java.io.File;
import?java.io.FileOutputStream;
import?javax.imageio.ImageIO;
import?com.sun.image.codec.jpeg.JPEGCodec;
import?com.sun.image.codec.jpeg.JPEGEncodeParam;
import?com.sun.image.codec.jpeg.JPEGImageEncoder;
public?class?PicUtil?{
/**
?*?圖片馬賽克化
?*?
?*?@param?inputFile
?*????????????輸入圖片路徑
?*?@param?outputFile
?*????????????輸出圖片路徑
?*?@param?mosaicSize
?*????????????馬賽克大小
?*?@return
?*?@throws?Exception
?*?@author?changqing/2012-12-11/2012
?*/
public?static?boolean?mosaic(String?inputFile?String?outputFile?int?mosaicSize)?throws?Exception?{
//?獲得源文件
File?file?=?new?File(inputFile);
if?(!file.exists())?{
return?false;
}
BufferedImage?img?=?ImageIO.read(file);
return?mosaic(img?outputFile?mosaicSize);
}
/**
?*?圖片馬賽克化
?*?
?*?@param?img
?*?@param?outputFile
?*?@param?mosaicSize
?*?@return
?*?@throws?Exception
?*?@author?changqing/2012-12-11/2012
?*/
private?static?boolean?mosaic(BufferedImage?img?String?outputFile?int?mosaicSize)?throws?Exception?{
//?判斷圖片格式是否正確
if?(img?==?null)?{
return?false;
}
int?imageWidth?=?img.getWidth(null);
int?imageHeight?=?img.getHeight(null);
//?判斷馬賽克大小是否超出圖片范圍
if?(mosaicSize?<=?0?||?mosaicSize?>?imageWidth?||?imageWidth?>?imageHeight)?{
return?false;
}
BufferedImage?mosaicPic?=?new?BufferedImage(imageWidth?imageHeight?BufferedImage.TYPE_INT_RGB);
int?x?=?0;//?矩形繪制點的x坐標
int?y?=?0;?//?矩形繪制點的y坐標
int?xCnt?=?0;//?矩形繪制x方向個數
int?yCnt?=?0;//?矩形繪制y方向個數
if?(imageWidth?%?mosaicSize?==?0)?{
xCnt?=?imageWidth?/?mosaicSize;
}?else?{
xCnt?=?imageWidth?/?mosaicSize?+?1;
}
if?(imageHeight?%?mosaicSize?==?0)?{
yCnt?=?imageHeight?/?mosaicSize;
}?else?{
yCnt?=?imageHeight?/?mosaicSize?+?1;
}
//?繪制矩形并填充顏色
Graphics?gs?=?mosaicPic.getGraphics();
for?(int?i?=?0;?i? for?(int?j?=?0;?j? //?計算矩形寬高
int?mosaicWidth?=?mosaicSize;
int?mosaicHeight?=?mosaicSize;
if?(i?==?xCnt?-?1)?{
mosaicWidth?=?imageWidth?-?x;
}
if?(j?==?yCnt?-?1)?{
mosaicHeight?=?imageHeight?-?y;
}
//?矩形顏色取中心像素點RGB值
int?centerX?=?x;
int?centerY?=?y;
if?(mosaicWidth?%?2?==?0)?{
centerX?+=?mosaicWidth?/?2;
}?else?{
centerX?+=?(mosaicWidth?-?1)?/?2;
}
if?(mosaicHeight?%?2?==?0)?{
centerY?+=?mosaicHeight?/?2;
}?else?{
centerY?+=?(mosaicHeight?-?1)?/?2;
}
Color?color?=?new?Color(img.getRGB(centerX?centerY));
gs.setColor(color);
gs.fillRect(x?y?mosaicWidth?mosaicHeight);
y?=?y?+?mosaicSize;//?計算下一個矩形的y坐標
}
y?=?0;//?還原y坐標
x?=?x?+?mosaicSize;//?計算x坐標
}
gs.dispose();
//?輸出圖片
output(mosaicPic?outputFile?imageWidth?imageHeight);
return?true;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4031??2012-12-11?17:50??src\com\popo\tools\PicUtil.java
?????目錄??????????0??2012-12-11?17:31??src\com\popo\tools
?????目錄??????????0??2012-12-11?17:31??src\com\popo
?????目錄??????????0??2012-12-11?17:31??src\com
?????目錄??????????0??2012-12-11?17:30??src
-----------?---------??----------?-----??----
?????????????????4031????????????????????5
- 上一篇:安卓JSON源碼,與服務器交互源碼
- 下一篇:android版本更新
評論
共有 條評論