java 绘图 综合案例
2012-05-12 13:01:34 来源:WEB开发网核心提示:/*** * @param targetImg* 底图路径* @param fashion* 时尚指数* @param wenyi* 文艺指数* @param kengdie* 坑爹指数* @param xuepin* 血拼指数* @param huanbao* 环保指数* @param fenzhi* 评分,分值*
/**
*
* @param targetImg
* 底图路径
* @param fashion
* 时尚指数
* @param wenyi
* 文艺指数
* @param kengdie
* 坑爹指数
* @param xuepin
* 血拼指数
* @param huanbao
* 环保指数
* @param fenzhi
* 评分,分值
* @param imgUrl
* 右上角图片URl
* @param imgCenter
* 用户图
* @param shuxingImg
* 属性图片URL
* @param newImgUrl
* 新生成的图片保存地址
* @param userName
* 用户名
* @param imgSecond
* 第二层底图
* @throws FWException
*/
public void matrix_Images(String targetImg,int fashion,int wenyi,int kengdie,int xuepin,int huanbao,int fenzhi,String imgUrl,Image userImage,String newImgUrl,String shuxingImg,String userName, String imgSecond) throws FWException{
try {
File _file = new File(targetImg);
Image src = ImageIO.read(_file);
int wideth = src.getWidth(null);
int height = src.getHeight(null);
BufferedImage image = new BufferedImage(wideth, height,BufferedImage.TYPE_INT_RGB);
//创建图层,获取绘画对象(画笔)
Graphics g = image.createGraphics();
g.drawImage(src, 0, 0, wideth, height, null);
g.setColor(new Color(237,121,81));
/*
* 根据相应指数,决定线的端点
*/
//根据时尚指数确定具体坐标
int s_x=0;
int s_y=0;
if(0<=fashion && fashion<21){
s_x=248;
s_y=253;
}else if(20<fashion && fashion<31){
s_x=257;
s_y=251;
}else if(30<fashion && fashion<41){
s_x=266;
s_y=249;
}else if(40<fashion && fashion<51){
s_x=275;
s_y=246;
}else if(50<fashion && fashion<61){
s_x=284;
s_y=243;
}else if(60<fashion && fashion<71){
s_x=293;
s_y=241;
}else if(70<fashion && fashion<81){
s_x=302;
s_y=238;
}else if(80<fashion && fashion<91){
s_x=311;
s_y=236;
}else if(90<fashion && fashion<1001){
s_x=321;
s_y=232;
}else {
s_x=0;
s_y=0;
}
//根据文艺指数来确定具体坐标
int w_x=0;
int w_y=0;
if(0<=wenyi && wenyi<21){
w_x=172;
w_y=254;
}else if(20<wenyi && wenyi<31){
w_x=161;
w_y=251;
}else if(30<wenyi && wenyi<41){
w_x=152;
w_y=249;
}else if(40<wenyi && wenyi<51){
w_x=143;
w_y=245;
}else if(50<wenyi && wenyi<61){
w_x=134;
w_y=244;
}else if(60<wenyi && wenyi<71){
w_x=125;
w_y=241;
}else if(70<wenyi && wenyi<81){
w_x=116;
w_y=238;
}else if(80<wenyi && wenyi<91){
w_x=107;
w_y=236;
}else if(90<wenyi && wenyi<1001){
w_x=98;
w_y=232;
}else {
w_x=0;
w_y=0;
}
//根据坑爹指数来确定具体坐标
int k_x=0;
int k_y=0;
if(0<=kengdie && kengdie<21){
k_x=209;
k_y=227;
}else if(20<kengdie && kengdie<31){
k_x=209;
k_y=217;
}else if(30<kengdie && kengdie<41){
k_x=209;
k_y=207;
}else if(40<kengdie && kengdie<51){
k_x=209;
k_y=197;
}else if(50<kengdie && kengdie<61){
k_x=209;
k_y=187;
}else if(60<kengdie && kengdie<71){
k_x=209;
k_y=177;
}else if(70<kengdie && kengdie<81){
k_x=209;
k_y=167;
}else if(80<kengdie && kengdie<91){
k_x=209;
k_y=157;
}else if(90<kengdie && kengdie<1001){
k_x=209;
k_y=150;
}else {
k_x=0;
k_y=0;
}
//根据血拼指数来确定具体坐标
int x_x=0;
int x_y=0;
if(0<=xuepin && xuepin<21){
x_x=187;
x_y=298;
}else if(20<xuepin && xuepin<31){
x_x=181;
x_y=307;
}else if(30<xuepin && xuepin<41){
x_x=175;
x_y=316;
}else if(40<xuepin && xuepin<51){
x_x=169;
x_y=325;
}else if(50<xuepin && xuepin<61){
x_x=163;
x_y=334;
}else if(60<xuepin && xuepin<71){
x_x=157;
x_y=343;
}else if(70<xuepin && xuepin<81){
x_x=151;
x_y=352;
}else if(80<xuepin && xuepin<91){
x_x=145;
x_y=361;
}else if(90<xuepin && xuepin<1001){
x_x=139;
x_y=368;
}else {
x_x=0;
x_y=0;
}
//根据环保指数来确定具体坐标
int h_x=0;
int h_y=0;
if(0<=huanbao && huanbao<21){
h_x=232;
h_y=298;
}else if(20<huanbao && huanbao<31){
h_x=238;
h_y=307;
}else if(30<huanbao && huanbao<41){
h_x=244;
h_y=316;
}else if(40<huanbao && huanbao<51){
h_x=250;
h_y=325;
}else if(50<huanbao && huanbao<61){
h_x=256;
h_y=334;
}else if(60<huanbao && huanbao<71){
h_x=262;
h_y=343;
}else if(70<huanbao && huanbao<81){
h_x=268;
h_y=352;
}else if(80<huanbao && huanbao<91){
h_x=275;
h_y=361;
}else if(90<huanbao && huanbao<1001){
h_x=278;
h_y=368;
}else {
h_x=0;
h_y=0;
}
//画中心矩形图
int Poly1_x[]={s_x,k_x,w_x,h_x,x_x};
int Poly1_y[]={s_y,k_y,w_y,h_y,x_y};
int Poly1_pts=Poly1_x.length;
Polygon poly1= new Polygon(Poly1_x,Poly1_y, Poly1_pts);
Polygon poly2= new Polygon();
//设置中心矩形图五个坐标点
poly2.addPoint(k_x, k_y);
poly2.addPoint(w_x, w_y);
poly2.addPoint(x_x, x_y);
poly2.addPoint(h_x, h_y);
poly2.addPoint(s_x, s_y);
g.setColor(new Color(189,196,218));
g.drawPolygon(poly1);
g.fillPolygon(poly2);
//添加第二层底图
File tow_imgurl = new File(imgSecond);
Image two_img = ImageIO.read(tow_imgurl);
g.drawImage(two_img, 0,0, 601, 462, null);
//添加图片矩形图中心图
// File _filebiao = new File(imgUrl);
// Image src_biao = ImageIO.read(_filebiao);
// g.drawImage(src_biao, 200,263, 22, 22, null);
//画线
// g.setColor(new Color(102,103,103));
// g.drawLine(209,155, 212, 265);
// g.setColor(new Color(20,118,178));
// g.drawLine(97,244, 202, 272);
// g.setColor(new Color(234,84,26));
// g.drawLine(140,388, 206, 284);
// g.setColor(new Color(124,190,39));
// g.drawLine(278,388, 217, 284);
// g.setColor(new Color(136,67,150));
// g.drawLine(322,245, 221, 272);
//添加右上角用户图片
//URL you_imgurl = new URL(imgCenter);
//Image src_biao_you = ImageIO.read(you_imgurl);
g.drawImage(userImage, 522,37, 60, 60, null);
//添加属性图片
File shuxing_imgurl = new File(shuxingImg);
Image shuxing_img = ImageIO.read(shuxing_imgurl);
g.drawImage(shuxing_img, 385,295, 100, 50, null);
//写入指数值
String str="【"+fenzhi+"分】";
g.setColor(new Color(0,0,0));
//设置字体
g.setFont(new Font("微软雅黑",Font.BOLD,25));
//设置文字坐标
g.drawString(str, 480, 329);
//写入右上角用户名
g.setColor(new Color(0,0,0));
//设置字体
g.setFont(new Font("微软雅黑",Font.BOLD,15));
//设置文字坐标
userName=substring(userName,6);
g.drawString(userName, 526, 114);
//生成图片
g.dispose();
FileOutputStream out = new FileOutputStream(newImgUrl);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close(); //关闭输出流
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
throw new FWException("-255", "error image");
}
}
更多精彩
赞助商链接
