中国国旗图片生成代码-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下测试通过

 

 

目录
相关文章
|
26天前
|
前端开发 Java
java通过commons-fileupload实现多张图片的上传(jsp页面)
java通过commons-fileupload实现多张图片的上传(jsp页面)
16 2
|
8月前
|
前端开发 JavaScript Java
前端——JSP中引入项目中的js文件或css文件或图片
前端——JSP中引入项目中的js文件或css文件或图片
|
9月前
|
Java 数据库
JSP第十八课让你体验不一样的代码世界《笔记内容三》(二)
JSP第十八课让你体验不一样的代码世界《笔记内容三》(二)
47 0
|
9月前
|
druid Java 关系型数据库
JSP第十八课让你体验不一样的代码世界《笔记内容三》(一)
JSP第十八课让你体验不一样的代码世界《笔记内容三》(一)
48 0
|
11月前
|
Java
java通过commons-fileupload实现多张图片的上传(jsp页面)
java通过commons-fileupload实现多张图片的上传(jsp页面)
146 0
|
Java Maven
Maven---使用maven完成Javaweb开发jsp图片加载不上问题
Maven---使用maven完成Javaweb开发jsp图片加载不上问题
Maven---使用maven完成Javaweb开发jsp图片加载不上问题
JSP学习(一):声明脚本、表达式脚本和代码脚本
虽然现在JSP用得不多了 ,但是很多学习JSP也就需要几天时间,而且很多项目仍然使用JSP,因此我也花几天时间学习一下JSP,要求自己能看懂代码就行。
|
缓存 前端开发 JavaScript
JSP img元素无法显示本地图片的问题(二)_根源:spring访问静态资源
JSP img元素无法显示本地图片的问题(二)_根源:spring访问静态资源
239 0
JSP img元素无法显示本地图片的问题(二)_根源:spring访问静态资源
|
Java 应用服务中间件
JSP img元素无法显示本地图片的问题(一)
JSP img元素无法显示本地图片的问题(一)
329 0
IDEA写jsp代码报错,但是正常运行解决
首先说明,jsp是一个很老的技术了,用的比较少了,但是难免会接触到。
229 0