本文实例讲述了jsp实现生成中国国旗图片效果代码。分享给大家供大家参考,具体如下:
图片截图如下:
具体代码如下:
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%>
<%@ page contenttype="image/jpeg" import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*,java.awt.shape.*,java.awt.geom.*,com.sun.image.codec.jpeg.*" %>
<%
out.clear();
response.setcontenttype("image/jpeg");
response.setheader("pragma","no-cache");
response.setheader("cache-control","no-cache");
response.setdateheader("expires", 0);
int width =300;
int height = width/3*2;
double maxr = 0.15, minr = 0.05;
double maxx = 0.50, maxy = 0.50;
double[] minx = {0.75, 0.85, 0.85, 0.75};
double[] miny = {0.35, 0.45, 0.60, 0.70};
bufferedimage image = new bufferedimage(width, height, bufferedimage.type_int_rgb);
java.awt.graphics2d g=(java.awt.graphics2d)image.creategraphics();
g.clearrect(0, 0,width,height);
g.setrenderinghint(renderinghints.key_antialiasing, renderinghints.value_antialias_on);
//画棋面
g.setcolor(java.awt.color.red);
g.fillrect(0, 0, width, height);
//g.fillrect(50, 50, width, height);
g.setcolor(java.awt.color.yellow);
//画大五角星
double ox = height*maxx, oy = height*maxy;
g.fill(createpentacle(ox,oy,height*maxr,-math.pi/2));
//画小五角星
for(int idx =0;idx < 4;idx ++){
double sx = minx[idx]*height, sy = miny[idx]*height;
double theta = math.atan2(oy-sy,ox-sx);
g.fill(createpentacle(sx,sy,height*minr,theta));
}
g.dispose();
out.clearbuffer();
out = pagecontext.pushbody();
//imageio.write(image, "jpeg", response.getoutputstream());
servletoutputstream outstream = response.getoutputstream();
jpegimageencoder encoder =jpegcodec.createjpegencoder(outstream);
encoder.encode(image);
outstream.close();
%>
<%!
public static java.awt.shape createpentacle(double sx, double sy, double radius,double theta) {
final double arc = math.pi / 5;
final double rad = math.sin(math.pi / 10) / math.sin(3 * math.pi / 10);
generalpath path = new generalpath();
path.moveto(1, 0);
for (int idx = 0; idx < 5; idx++) {
path.lineto(rad * math.cos((1 + 2 * idx) * arc),rad * math.sin((1 + 2 * idx) * arc));
path.lineto(math.cos(2 * (idx + 1) * arc),math.sin(2 * (idx + 1) * arc));
}
path.closepath();
affinetransform atf = affinetransform.getscaleinstance(radius, radius);
atf.translate(sx / radius, sy / radius);
atf.rotate(theta);
return atf.createtransformedshape(path);
}
%>
将代码另存为jsp文件,放在运行目录下执行即可。
代码在tomcat6.0下测试通过
希望本文所述对大家jsp程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!