Vous devez être membre et vous identifier pour publier un article.
Les visiteurs peuvent toutefois commenter chaque article par une réponse.
Article publié le Lundi 29 Janvier 2007, 13:34
/* * Created on Jan 26, 2007 * */ package be.fery.dynamicImage.control; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Shape; import java.awt.geom.Arc2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; public class BasicImageGeneratorServlet extends HttpServlet { private int beginAngle = 0; private int endAngle = 180; private int imageWidth = 320; private int imageHeight = 200; public BasicImageGeneratorServlet() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) { doHandle(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) { doHandle(request, response); } public void doHandle(HttpServletRequest request, HttpServletResponse response) { try { getParameters(request); gr.fillRect(0, 0, imageWidth, imageHeight); gr.drawArc(0, 0, imageWidth, imageHeight, beginAngle, endAngle - beginAngle); int x1 = (int) (imageWidth / 2); int y1 = (int) (imageHeight / 2); gr.drawLine(x1, y1, x2, y2); gr.drawLine(x1, y1, x2, y2); response.setContentType("image/jpg"); response.setHeader("Content-disposition", "inline; filename=test.jpg"); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response.getOutputStream()); encoder.encode(image); e.printStackTrace(); } } private void getParameters(HttpServletRequest request) { imageWidth = 320; try { if ((param = request.getParameter(REQ_PARAM_BEGIN_ANGLE)) != null) beginAngle = 0; } try { if ((param = request.getParameter(REQ_PARAM_END_ANGLE)) != null) endAngle = 180; } try { if ((param = request.getParameter(REQ_PARAM_IMG_WIDTH)) != null) imageWidth = 320; } try { if ((param = request.getParameter(REQ_PARAM_IMG_HEIGHT)) != null) imageHeight = 200; } } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>BasicGenerator</servlet-name> <servlet-class>be.fery.dynamicImage.control.BasicImageGeneratorServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BasicGenerator</servlet-name> <url-pattern>/BasicGenerator</url-pattern> </servlet-mapping> </web-app>
<html> <head> var tOut = 2000; var tId = null; function updateGraphics(){ document.getElementsByName('endAngle')[0].value=parseInt(document.getElementsByName('endAngle')[0].value)+10; getImage(); tId = setTimeout("updateGraphics()",tOut); } function startUpdate(){ document.getElementsByName('image')[0].style.display="block"; document.getElementsByName('stopButton')[0].disabled=false; document.getElementsByName('startButton')[0].disabled=true; updateGraphics(); } function stopUpdate(){ clearTimeout(tId); document.getElementsByName('startButton')[0].disabled=false; document.getElementsByName('stopButton')[0].disabled=true; } function getImage(){ var url = "http://<votre_serveur>:<votre_port>/imageGenerator/BasicGenerator"; url += "?imageWidth="+getFieldValue('imageWidth'); url += "&imageHeight="+getFieldValue('imageHeight'); url += "&beginAngle="+getFieldValue('beginAngle'); url += "&endAngle="+getFieldValue('endAngle'); document.getElementsByName('image')[0].src=url; } function getFieldValue(fieldName){ document.getElementsByName('image')[0].style.display="block"; return document.getElementsByName(fieldName)[0].value; } </script> </head> <body> <table> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </tr> <tr> </td> </tr> </table> </body> </html>
//Création d'un image //Récupération de l'objet Graphics de cette image que l'on caste en Graphics2D //On dessine sur l'objet Graphics2D gr.fillRect(0, 0, imageWidth, imageHeight); gr.drawArc(0, 0, imageWidth, imageHeight, beginAngle, endAngle - beginAngle); int x1 = (int) (imageWidth / 2); int y1 = (int) (imageHeight / 2); gr.drawLine(x1, y1, x2, y2); gr.drawLine(x1, y1, x2, y2); //IMPORTANT: définir le type de contenu de la réponse response.setContentType("image/jpg"); //Définir le contenu comme étant "inline" et, éventuellement, spécifier un nom pour l'image générée response.setHeader("Content-disposition", "inline; filename=test.jpg"); //Instancier un JPEGImageEncoder en lui passant le flux sur lequel il devra envoyer l'image JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder (response.getOutputStream()); //Appeler la méthode encode() de l'encoder: la magie est ici (ici devrait apparaître un smiley qui vous fait un petit clin d'oeil mais, nom di dju Steph!, arrête de parser tout le code publié et de supprimer mes petites smileys!). En effet, l'encoder va générer l'image JPEG et l'envoyer directement sur le flux de sortie de la servlet encoder.encode(image);
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.
319 mots clés dont 1 définis manuellement (plus d'information...).
Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.
Recherche (afficher)
Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
Citation (masquer)