原文:在线jsp版泰囧表情的生成器代码,不用PS也能恶搞。

源代码下载地址:hhttp://www.zuidaima.com/share/1687663042939904.htm

以前分享过java实现的通过图片模板生成泰囧的例子:

java版泰囧表情的生成器代码,不用PS也能恶搞。

这次分享的是在线jsp版本的

预览地址:http://demo.zuidaima.com/taijiong.jsp

也可以自定义其他文字,如:

http://demo.zuidaima.com/taijiong.jsp?t1=%E6%98%A5%E8%8A%82happy%E5%AE%8C%E4%BA%86%E5%90%A7%EF%BC%9F&t2=%E8%BF%98%E6%B2%A1happy%E5%A4%9F%E4%B9%88%EF%BC%9F&t3=%E8%BF%99%E5%91%A8%E5%85%AD%E6%97%A5%E5%B0%BC%E7%8E%9B%E5%8A%A0%E7%8F%AD%E8%BF%9E%E4%B8%8A9%E5%A4%A9%E7%8F%AD%E5%91%80%EF%BC%81%EF%BC%81%EF%BC%81

001 <%@ page language="java" contentType="image/gif;charset=utf-8" pageEncoding="utf-8"%>
002 <%@ page import="java.io.*" %>
003 <%@ page import="org.apache.commons.io.FileUtils" %>
004 <%@ page import="java.awt.*" %>
005 <%@ page import="java.awt.image.BufferedImage" %>
006 <%@ page import="javax.imageio.ImageIO" %>
007  
008 <%!
009 int getLength(String text) {
010     int textLength = text.length();
011     int length = textLength;
012     for (int i = 0; i < textLength; i++) {
013         if (String.valueOf(text.charAt(i)).getBytes().length > 1) {
014             length++;
015         }
016     }
017     return (length % 2 == 0) ? length / 2 : length / 2 1;
018 }
019 %>
020  
021 <%
022     String targetImg=null;
023     String t1=request.getParameter("t1");
024     String pressText1="你想加入最代码的java版微博开发活动weibo4j么?";
025     if(t1!=null){
026         pressText1=new String(t1.getBytes("iso8859-1"),"utf-8");
027     }
028     String pressText2="还差1牛币?";
029     String t2=request.getParameter("t2");
030     if(t2!=null){
031         pressText2=new String(t2.getBytes("iso8859-1"),"utf-8");
032     }
033     String t3=request.getParameter("t3");
034     String pressText3="啊哈哈哈哈!!!现在涨成1000牛币了!!!";
035     if(t3!=null){
036         pressText3=new String(t3.getBytes("iso8859-1"),"utf-8");
037     }
038     int fontSize=18;
039     Color color=Color.WHITE;
040     try {
041         File file=new File("/data/www/www.zuidaima.com/images/113/1132701359327232.jpg");
042         Image image = ImageIO.read(file);
043         int width = image.getWidth(null);
044         int height = image.getHeight(null);
045         BufferedImage bufferedImage = new BufferedImage(width, height,
046                 BufferedImage.TYPE_INT_RGB);
047         Graphics2D g = bufferedImage.createGraphics();
048         g.drawImage(image, 00, width, height, null);
049         g.setFont(new Font("微软雅黑", Font.BOLD, fontSize));
050         g.setColor(color);
051         g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
052                 1));
053         int x = 135;
054         int y = 163;
055         int width_1 = fontSize * getLength(pressText1);
056         int height_1 = fontSize;
057         int widthDiff = width - width_1;
058         int heightDiff = height - height_1;
059         if (x < 0) {
060             x = widthDiff / 2;
061         else if (x > widthDiff) {
062             x = widthDiff;
063         }
064         if (y < 0) {
065             y = heightDiff / 2;
066         else if (y > heightDiff) {
067             y = heightDiff;
068         }
069  
070         g.drawString(pressText1, x, y + height_1);
071  
072         x = 135;
073         y = 355;
074         width_1 = fontSize * getLength(pressText1);
075         height_1 = fontSize;
076         widthDiff = width - width_1;
077         heightDiff = height - height_1;
078         if (x < 0) {
079             x = widthDiff / 2;
080         else if (x > widthDiff) {
081             x = widthDiff;
082         }
083         if (y < 0) {
084             y = heightDiff / 2;
085         else if (y > heightDiff) {
086             y = heightDiff;
087         }
088         g.drawString(pressText2, x, y + height_1);
089  
090         x = 135;
091         y = 550;
092         width_1 = fontSize * getLength(pressText1);
093         height_1 = fontSize;
094         widthDiff = width - width_1;
095         heightDiff = height - height_1;
096         if (x < 0) {
097             x = widthDiff / 2;
098         else if (x > widthDiff) {
099             x = widthDiff;
100         }
101         if (y < 0) {
102             y = heightDiff / 2;
103         else if (y > heightDiff) {
104             y = heightDiff;
105         }
106         g.drawString(pressText3, x, y + height_1);
107         g.dispose();
108         ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
109     catch (Exception e) {
110         e.printStackTrace();
111     }
112 %>

另外centos环境下会出现乱码的问题,windows下没有问题,需要修改jdk的fonts支持

需要将微软雅黑的字体复制到jdk的fonts目录,如:

/usr/local/jdk1.6.0_31/jre/lib/fonts/fallback/msyh.ttf

微软雅黑下载地址:http://demo.zuidaima.com/download/msyh.ttf

线jsp版泰囧表情的生成器代码,不用PS也能恶搞。相关推荐

  1. 在线jsp版泰囧表情的生成器代码,不用PS也能恶搞。

    转载请注明出处:在线jsp版泰囧表情的生成器代码,不用PS也能恶搞. 代码下载地址:http://www.zuidaima.com/share/1687663042939904.htm 以前分享过ja ...

  2. java版泰囧表情的生成器代码,不用PS也能恶搞。

    模版图片 生成后图片 和java攻城狮享受吧. 转自:http://www.zuidaima.com/share/1554294795226112.htm

  3. 100 行 Java 代码实现一个表情包生成器!

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 blog.csdn.net/xiaojimanman/article/detai ...

  4. 表情自动生成器java代码实现

    转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/18556703 前几天在其他网站上看到一个表情自动生成器,自己就试着做了一下,先看 ...

  5. 100行代码搞定实时视频人脸表情识别(附代码)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|OpenCV学堂 好就没有写点OpenCV4 + Open ...

  6. 打造线下版元宇宙!机器人VR助力远程做核酸,登上Science子刊

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨程 茜 来源丨智东西 编辑丨Panken 中国科学家研发"魔法贴",让你跟机 ...

  7. ueditor1.4.3 jsp版在ssh下的配置

    2019独角兽企业重金招聘Python工程师标准>>> 对于ueditor就不介绍了,网上一大把,直接言归正传,其主要问题是图片等的上传. 开发环境: myeclipse2014+t ...

  8. Fer2013 数据集人脸表情识别 详细代码

    Fer2013 数据集人脸表情识别 详细代码 本文将从数据集.模型训练.模型实践应用(AI模型落地场景实际应用)几个部分完整讲解基于Fer2013 数据集的人脸表情识别项目, 最终项目实现效果: 通过 ...

  9. 软件实习项目2——贪吃喵(猫吃鱼版贪吃蛇)(代码实现)

    软件实习项目2--贪吃喵(猫吃鱼版贪吃蛇)(代码实现) 类变量的定义以及类的初始化__init__ 一.游戏的逻辑 1.猫头的生成 2.鱼的生成 3.猫头和鱼骨的移动 4.按下键盘,改变方向 二.主窗 ...

最新文章

  1. Java的学习之路(1)
  2. 2020.12.07.记录
  3. 等待指定时间后自动跳转或关闭当前页面
  4. 论文阅读: Direct Monocular Odometry Using Points and Lines
  5. ssm上传文件进度条_ssm学习笔记-三种文件上传方式
  6. oracle 启用闪回数据库,如何启用Oracle10g闪回数据库特性
  7. python生成随机密码串
  8. C++实现播放音频文件
  9. java系统找不到文件_java编译系统找不到指定文件
  10. 计算机断网后显示配置0%,电脑断网后自动报警提醒怎么设置
  11. python 网站 批量 投票_python requests 简单实现易班自动登录,批量_文章发布,投票发布,评论,点赞,v2.0...
  12. Jenkins容器由于虚拟内存不足导致的异常退出
  13. springMVC文件的上传和页面静态化技术
  14. 我的创作纪念日---祈愿
  15. 康威定律对架构设计的指导意义
  16. python入门day16——函数的递归调用、二分法、三元表达式、匿名函数
  17. oracle 10 卸载工具,完全卸载oracle10个(转)
  18. 计算机可以调剂到资源与环境吗,资源与环境求调剂 - 考研 - 小木虫 - 学术 科研 互动社区...
  19. 多示例学习距离度量 (distance measures)和集合核 (set-kernel)
  20. Binomial Heap

热门文章

  1. 新旧势力短兵相接:有焦虑但不恐慌 | SAECCE2018
  2. 游戏数据逆向分析系列课程之64位篇
  3. Android直播开发之旅(13):使用FFmpeg+OpenSL ES播放PCM音频
  4. windows安装包删了会有影响吗_在WIN7系统里的C盘用磁盘清理来删除 以前的Windows安装 这文件会对系统有什么危害吗...
  5. 一名即将退休的架构师告诉Java程序员们如何投资自己
  6. 主机用wifi上网,虚拟机怎样上网
  7. live server使用
  8. 一款基于stm32的智能衣柜
  9. 2年经验总结,告诉你如何做好项目管理
  10. 世事无常,知足常乐!