jcaptcha+ofbiz生成验证码

1.  在jcaptcha的官网上下载jar 【http://jcaptcha.sourceforge.net】

    下载一个jcaptcha-1.0-bin.zip解压缩,将其中的jcaptcha-1.0-all.jar拷贝至{ofbiz.home}\framework\base\lib\commons目录下


2. 编写代码如下

单例引擎

package com.web.image;import java.awt.Font;import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
import com.octo.captcha.component.image.backgroundgenerator.FunkyBackgroundGenerator;
import com.octo.captcha.component.image.color.RandomRangeColorGenerator;
import com.octo.captcha.component.image.fontgenerator.FontGenerator;
import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
import com.octo.captcha.component.image.textpaster.RandomTextPaster;
import com.octo.captcha.component.image.textpaster.TextPaster;
import com.octo.captcha.component.image.wordtoimage.ComposedWordToImage;
import com.octo.captcha.component.image.wordtoimage.WordToImage;
import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator;
import com.octo.captcha.component.word.wordgenerator.WordGenerator;
import com.octo.captcha.engine.image.ListImageCaptchaEngine;
import com.octo.captcha.image.gimpy.GimpyFactory;
import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;public class CaptchaServiceSingleton {private static ImageCaptchaService instance;public static ImageCaptchaService getInstance() {if(instance == null) {instance = new DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new MyImageCaptchaEngine(), 180,100000, 75000);}return instance;}
}class MyImageCaptchaEngine extends ListImageCaptchaEngine {protected void buildInitialFactories() {//生成随机字符WordGenerator wgen = new RandomWordGenerator("abcdefghijklmnopqrstuvwxyz123456789");RandomRangeColorGenerator cgen = new RandomRangeColorGenerator(new int[] { 0, 100 }, new int[] { 0, 100 },new int[] { 0, 100 });//文字显示的个数TextPaster textPaster = new RandomTextPaster(6, 6, cgen, true);//图片的大小BackgroundGenerator backgroundGenerator = new FunkyBackgroundGenerator(150, 50);//字体格式Font[] fontsList = new Font[] { new Font("Arial", 0, 15),new Font("Tahoma", 0, 15), new Font("Verdana", 0, 15) };//文字的大小FontGenerator fontGenerator = new RandomFontGenerator(15, 30, fontsList);WordToImage wordToImage = new ComposedWordToImage(fontGenerator,backgroundGenerator, textPaster);this.addFactory(new GimpyFactory(wgen, wordToImage));}
}

event类

package com.web.image;import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.ofbiz.base.util.Debug;import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;public class ImageCaptchaEvent {public static final String module = ImageCaptchaEvent.class.getName();public static String imageGeneration(HttpServletRequest req,HttpServletResponse resp) throws Exception {Debug.log("imageGeneration start <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", module);byte[] captchaChallengeAsJpeg = null;ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();try {String captchaId = req.getSession().getId();BufferedImage challenge = CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId, req.getLocale());JPEGImageEncoder jpegEncoder = JPEGCodec.createJPEGEncoder(jpegOutputStream);jpegEncoder.encode(challenge);} catch (Exception e) {e.printStackTrace();}captchaChallengeAsJpeg = jpegOutputStream.toByteArray();resp.setHeader("Cache-Control", "no-store");resp.setHeader("Pragma", "no-cache");resp.setDateHeader("Expires", 0);resp.setContentType("image/jpeg");ServletOutputStream responseOutputStream = resp.getOutputStream();responseOutputStream.write(captchaChallengeAsJpeg);responseOutputStream.flush();responseOutputStream.close();Debug.log("imageGeneration end >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", module);return "success";}
}

在controller.xml中添加如下配置



在ftl文件中加入图片


看不清? 点我一下!

至此已经完成了图片的生成




本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部