- 浏览: 114820 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zxjlwt:
学习了!http://surenpi.com
Eclipse开发之进度条 -
coolboyysy:
解决的办法是:导入相关包即可解决。包名如下:jruby-con ...
请教Tomcat启动,Spring调用时的java.lang.ClassNotFoundException: groov -
sitoto:
给个对应的确build.xml 的例子啊,,
使用Ant 构建Eclipse RCP Product -
masuweng:
今天培训恰好讲到这些内容了
单例模式在多线程下的使用 -
zhaofangtao:
hi
你这个示例是在 3.2还是3.4的??
我的3.4里 ...
记录swt对话框上次打开的地址
/**
*
*/
/**
* @author xingwei.jiao
*
*/
package com.qunar.wireless.ugc.service.cms;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import javax.imageio.ImageIO;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.qunar.wireless.ugc.caravan.business.las.record.MergePic;
import com.qunar.wireless.ugc.exception.DaoException;
import com.qunar.wireless.ugc.exception.ServiceException;
import com.qunar.wireless.ugc.module.pic.Album;
import com.qunar.wireless.ugc.service.pic.AlbumServiceImpl;
import com.qunar.wireless.ugc.service.pic.IAlbumService;
import com.qunar.wireless.ugc.service.user.UserServiceImpl;
public class TestPic{
private ApplicationContext ac;
private IAlbumService albumService;
private MergePic mergePic;
private static final Logger log = Logger.getLogger(TestPic.class);
@Before
public void setUp() throws Exception {
try {
ac = new ClassPathXmlApplicationContext("applicationContext.xml");
albumService = (AlbumServiceImpl) ac.getBean("com.qunar.wireless.ugc.service.pic.AlbumServiceImpl");
mergePic =(MergePic)ac.getBean("mergePic");
} catch (Exception e) {
e.printStackTrace();
}
}
@After
public void tearDown() throws Exception {
ac = null;
}
@Test
public void testSharePic(){
Long userId = 88l;
Long albumId = 68l;
try {
Album album = albumService.getById(albumId);
long start = System.currentTimeMillis();
String result = mergePic.createMergedPic(album, userId, true, false);
long end = System.currentTimeMillis();
log.info("生成拼图共花费了"+((end-start)/1000)+"秒!");
log.info("拼图的url: "+result);
System.out.println(result);
} catch (DaoException e) {
e.printStackTrace();
} catch (ServiceException e) {
e.printStackTrace();
}
}
@Test
public void testYSplicePic(){
try {
/* 1 读取第一张图片*/
File fileOne = new File("D:\\test\\2.JPG");
BufferedImage imageFirst = ImageIO.read(fileOne);
int width = imageFirst.getWidth();// 图片宽度
int height = imageFirst.getHeight();// 图片高度
int[] imageArrayFirst = new int[width * height];// 从图片中读取RGB
imageArrayFirst = imageFirst.getRGB(0, 0, width, height, imageArrayFirst, 0, width);
/* 1 对第二张图片做相同的处理 */
File fileTwo = new File("D:\\test\\8.JPG");
BufferedImage imageSecond = ImageIO.read(fileTwo);
height = imageSecond.getHeight();// 图片高度
int[] imageArraySecond = new int[width * height];
imageArraySecond = imageSecond.getRGB(0, 0, width, height, imageArraySecond, 0, width);
// 生成新图片
BufferedImage imageResult = new BufferedImage(width, height * 2,BufferedImage.TYPE_INT_RGB);
imageResult.setRGB(0, 0, width, height, imageArrayFirst, 0, width);// 设置左半部分的RGB
imageResult.setRGB(0, height, width, height, imageArraySecond, 0, width);// 设置右半部分的RGB
File outFile = new File("D:\\test\\out1.jpg");
ImageIO.write(imageResult, "jpg", outFile);// 写图片
System.out.println("合并图片成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testCreateMainPic_File(){
try {
int width = 470;
int height = 1024;
String s = "游记";
File file = new File("D:\\test\\album.JPG");
File head = new File("D:\\test\\head.JPG");
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画布
BufferedImage headBufferedImage = ImageIO.read(head);
Graphics2D graphics2d = (Graphics2D)bufferedImage.getGraphics(); //获取画布的画笔
graphics2d.setBackground(new Color(236,230,211));//创建背景色
graphics2d.clearRect(0, 0, width, height);
graphics2d.setPaint(new Color(129,183,83));
graphics2d.fillRect(0, 0, 400, 100);
graphics2d.drawImage(headBufferedImage, 10, 5, null);
graphics2d.setPaint(new Color(246,250,242));
graphics2d.setFont(new Font("宋体",Font.BOLD,20));
// graphics2d.fillRect(0, 10, 400, 10);
// graphics2d.setPaint(Color.red);
// FontRenderContext context = graphics2d.getFontRenderContext();
// Font font = Font.decode("宋体");
// font = font.deriveFont(Float.parseFloat("12"));
// Rectangle2D rectangle2d = font.getStringBounds(s, context);
// double x = (width - rectangle2d.getWidth()) / 2;
// double y = (height - rectangle2d.getHeight()) / 2;
// double ascent = -rectangle2d.getY();
// double baseY = y + ascent;
graphics2d.drawString(s, 120, 60);
ImageIO.write(bufferedImage, "jpg", file);
System.out.println("生成图片成功!");
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}
}
@Test
public void testCreateMainPic(){
try {
int width = 400;
int height = 1024;
String s = "游记";
File file = new File("D:\\test\\album.JPG");
File head = new File("D:\\test\\head.JPG");
File pic1 = new File("D:\\test\\pic1.JPG");
//start------开始读取标题信息,“去那网....”-------------------------------------------------------------------------------------
OutputStream outputStream = getBackgroundPicText();
ByteArrayInputStream byteArrayInputStream = null;
if(outputStream instanceof ByteArrayOutputStream){
byteArrayInputStream = new ByteArrayInputStream( ((ByteArrayOutputStream) outputStream).toByteArray());
}
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画布
BufferedImage headBufferedImage = ImageIO.read(head);
BufferedImage bImage = ImageIO.read(byteArrayInputStream);
BufferedImage pic1Image = ImageIO.read(pic1);
Graphics2D graphics2d = (Graphics2D)bufferedImage.getGraphics(); //获取画布的画笔
graphics2d.setBackground(new Color(236,230,211));//创建背景色
graphics2d.clearRect(0, 0, width, height);
graphics2d.setPaint(new Color(129,183,83));
graphics2d.fillRect(0, 0, width, 100);
graphics2d.drawImage(headBufferedImage, 10, 5, null);
graphics2d.setPaint(new Color(246,250,242));
graphics2d.setFont(new Font("宋体",Font.BOLD,20));
graphics2d.drawString(s, 120, 60);
//start,开始插入标题信息图片--------------------------------------------------------------------------------------------------------
graphics2d.drawImage(bImage, 20, 130, null);
//开始插入图片和文字1
outputStream = getPicText();
if(outputStream instanceof ByteArrayOutputStream){
byteArrayInputStream = new ByteArrayInputStream( ((ByteArrayOutputStream) outputStream).toByteArray());
}
bImage = ImageIO.read(byteArrayInputStream);
graphics2d.drawImage(bImage, 20, 300, null);
//开始生成图片
ImageIO.write(bufferedImage, "jpg", file);
graphics2d.dispose();
System.out.println("生成图片成功!");
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}
}
@Test
public void testCreateBackgroundPicText(){
try {
int width = 470;
int height = 125;
String s1 = "【去哪儿网旅图】每日最佳图片1111";
String dateString = "2012-08-21";
String tripString = "29天旅程";
String addressString = "北京 上海 广州 山东";
File result = new File("D:\\test\\textHead.JPG");
File background = new File("D:\\test\\backgroundTextHead.JPG");
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画布
BufferedImage headBufferedImage = ImageIO.read(background);
Graphics2D graphics2d = (Graphics2D)bufferedImage.getGraphics(); //获取画布的画笔
graphics2d.setBackground(new Color(236,230,211));//创建背景色
graphics2d.clearRect(0, 0, width, height);
graphics2d.drawImage(headBufferedImage, 0, 0, null);
graphics2d.setPaint(new Color(60,60,60));
graphics2d.setFont(new Font("宋体",Font.BOLD,20));
// graphics2d.fillRect(0, 10, 400, 10);
// graphics2d.setPaint(Color.red);
// FontRenderContext context = graphics2d.getFontRenderContext();
// Font font = Font.decode("宋体");
// font = font.deriveFont(Float.parseFloat("12"));
// Rectangle2D rectangle2d = font.getStringBounds(s, context);
// double x = (width - rectangle2d.getWidth()) / 2;
// double y = (height - rectangle2d.getHeight()) / 2;
// double ascent = -rectangle2d.getY();
// double baseY = y + ascent;
graphics2d.drawString(s1, 20, 30);
graphics2d.setFont(new Font("宋体",Font.PLAIN,14));
graphics2d.drawString(dateString, 45, 70);
graphics2d.drawString(tripString, 200, 70);
graphics2d.drawString(addressString, 30, 100);
ImageIO.write(bufferedImage, "jpg", result);
graphics2d.dispose();
System.out.println("生成图片成功!");
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}
}
public OutputStream getBackgroundPicText(){
OutputStream outputStream = new ByteArrayOutputStream();
try {
int width = 470;
int height = 125;
String s1 = "【去哪儿网旅图】每日最佳图片";
String dateString = "2012-08-21";
String tripString = "29天旅程";
String addressString = "北京 上海 广州 山东";
File result = new File("D:\\test\\textHead.JPG");
File background = new File("D:\\test\\backgroundTextHead.JPG");
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画布
BufferedImage headBufferedImage = ImageIO.read(background);
Graphics2D graphics2d = (Graphics2D)bufferedImage.getGraphics(); //获取画布的画笔
graphics2d.setBackground(new Color(236,230,211));//创建背景色
graphics2d.clearRect(0, 0, width, height);
graphics2d.drawImage(headBufferedImage, 0, 0, null);
graphics2d.setPaint(new Color(60,60,60));
graphics2d.setFont(new Font("宋体",Font.BOLD,20));
// graphics2d.fillRect(0, 10, 400, 10);
// graphics2d.setPaint(Color.red);
// FontRenderContext context = graphics2d.getFontRenderContext();
// Font font = Font.decode("宋体");
// font = font.deriveFont(Float.parseFloat("12"));
// Rectangle2D rectangle2d = font.getStringBounds(s, context);
// double x = (width - rectangle2d.getWidth()) / 2;
// double y = (height - rectangle2d.getHeight()) / 2;
// double ascent = -rectangle2d.getY();
// double baseY = y + ascent;
graphics2d.drawString(s1, 20, 30);
graphics2d.setFont(new Font("宋体",Font.PLAIN,14));
graphics2d.drawString(dateString, 45, 70);
graphics2d.drawString(tripString, 200, 70);
graphics2d.drawString(addressString, 30, 100);
boolean f = ImageIO.write(bufferedImage, "jpg", outputStream);
if(f){
System.out.println("生成图片成功!");
}else{
System.out.println("生成图片出错........");
}
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}
return outputStream;
}
public OutputStream getPicText(){
OutputStream outputStream = new ByteArrayOutputStream();
try {
int width = 470;
int height = 400;//传进来的
String desc = "描述信息haha的绝对狙击得紧紧的...........";
String addressString = "北京 上海 广州 山东";
String dateString = "2012-08-21";
String pic1String = "";
File anchor = new File("D:\\test\\anchor.JPG");
File time = new File("D:\\test\\time.JPG");
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);//创建一个画布
Graphics2D graphics2d = (Graphics2D)bufferedImage.getGraphics(); //获取画布的画笔
graphics2d.setBackground(new Color(255,255,255));//创建背景色
graphics2d.clearRect(0, 0, width, height);
if(pic1String != null && !pic1String.equals("")){
File pic1 = new File(pic1String);
BufferedImage pic1BufferedImage = ImageIO.read(pic1);
graphics2d.drawImage(pic1BufferedImage, 10, 5, null);
}
if(desc != null && !desc.equals("")){
graphics2d.setPaint(new Color(60,60,60));
graphics2d.setFont(new Font("宋体",Font.PLAIN,14));
graphics2d.drawString(desc, 20, 30); //30,是自动算出来
}
if(addressString != null && !addressString.equals("")){//画锚点跟地址
BufferedImage anchorBufferedImage = ImageIO.read(anchor);
graphics2d.drawImage(anchorBufferedImage, 10, 310, null);
graphics2d.setPaint(new Color(65,152,167));
graphics2d.setFont(new Font("宋体",Font.PLAIN,14));
graphics2d.drawString(addressString, 20, 320);
}
if(dateString != null && !dateString.equals("")){//时间
BufferedImage timeBufferedImage = ImageIO.read(time);
graphics2d.drawImage(timeBufferedImage, 250, 310, null);
graphics2d.setPaint(new Color(65,152,167));
graphics2d.setFont(new Font("宋体",Font.PLAIN,14));
graphics2d.drawString(dateString, 270, 320);
}
boolean f = ImageIO.write(bufferedImage, "jpg", outputStream);
if(f){
System.out.println("生成图片成功!");
}else{
System.out.println("生成图片出错........");
}
} catch (IOException e) {
System.out.println("生成图片出错........");
e.printStackTrace();
}
return outputStream;
}
@Test
public void getHeadHeight(){
String headUrl = "http://source.qunar.com/site/images/wap/lvtu/lvtu_userhead.gif";
try {
URL url = new URL(headUrl);
BufferedImage headBufferedImage = ImageIO.read(url);
int height = headBufferedImage.getHeight();
System.out.println("height:"+height);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
发表评论
-
java拼图
2012-09-04 16:39 1235/** * */ /** * @author ... -
有用的SQL
2010-10-14 18:37 11251.db2 删除重复的记录:delete from (sele ... -
工作中遇到的问题总结---不断更新
2010-10-14 18:35 148291. 启动tomcat报找不到com.ibm.db2.jcc. ... -
Javascript在页面加载时的执行顺序
2010-09-08 09:37 1484Javascript在页面加载时的执行顺序 收藏 一、在H ... -
XML to XML 转换的类
2009-11-27 15:02 1044/** * <p> * Title: Parser ... -
我自己写的XML to XML 转换的工具
2009-11-27 14:58 1193一、xml to xml 转换原理 在ESB中,很多时候需要 ... -
今天写的拷贝某个目录下所有符合要求的文件名到某个指定文件名的工具类
2009-02-12 14:57 1144今天因为想把eclipse语言 ... -
Java传值还是传引用终极解释,还是看老外解释的清楚啊。
2008-06-12 15:39 6618by http://www.javaworld.com/jav ... -
使用JXL读Excel文件
2007-09-15 15:52 3871使用JXL读Excel文件 以前用过POI解析Excel,但是 ...
相关推荐
8. **测试与优化**: 开发者需要进行单元测试、集成测试以及性能测试,确保游戏在各种设备和Android版本上都能正常运行。此外,为了提高效率,可能需要对图像处理算法进行优化,比如使用缓存策略减少重复计算。 9. *...
在拼图游戏中,我们可能需要创建一个CWinApp派生类来作为游戏的主程序,以及多个CWnd派生类来实现游戏界面的不同部分。 拼图游戏的开发过程可以分为以下几个步骤: 1. **图像处理**:在MFC中,我们可以使用GDI...
萌新做的一个简单的Java拼图游戏 ...其他有主方法的是测试类。 多线程。 下拉列表选择数字可以切换关卡图片,最后的“+”,可以添自己的图片到关卡中。 设有背景音乐 有一键通过按钮 等等,块下载去看看吧。
在本项目中,我们主要探讨的是如何使用Java编程语言来创建一个拼图小游戏。这个程序不仅包含基本的拼图逻辑,还集成了音乐播放功能,为用户提供了丰富的游戏体验。以下将详细介绍涉及的关键知识点。 1. **Java编程...
同时,Android的Canvas和Paint类可以用于在屏幕上绘制和着色这些拼图块。 **游戏逻辑**是拼图游戏的内核。开发者需要实现算法来打乱拼图、检查拼图是否完成、移动拼图块等功能。这可能涉及到数组或集合来存储拼图的...
C#的System.Random类可以帮助我们生成随机数,然后根据这些随机数重新排列拼图块。 6. **状态管理**:为了跟踪拼图的状态(如是否完成),我们需要维护一个二维数组或List来表示拼图的当前布局,并与原始图像进行...
由于给出的列表只有一个文件名“拼图游戏”,我们可以推测这可能包含了整个项目的所有源代码文件、资源文件或者编译后的类文件。在Java项目中,通常会有一个或多个源代码文件夹(如src),包含了.java源代码文件;...
同时,可以使用`Matrix`类来处理拼图块的位置和旋转。 4. **触摸事件处理**:通过重写`onTouchEvent()`方法,监听用户的触摸操作。判断用户点击的是哪个拼图块,然后更新该块的位置,确保其在允许的范围内移动。 5...
Java的`java.awt.image`包提供了BufferedImage类来处理图像,`javax.imageio.ImageIO`类用于读取和写入图像文件。 4. **数据结构**:拼图游戏的核心是拼图的状态表示。这通常使用二维数组或ArrayList来存储每个拼图...
如果"拼图"是源代码文件夹,那么里面可能包含了主程序类、图像处理类、用户交互逻辑以及可能的测试代码。如果是可执行文件,那可能是已经编译好的JAR包,可以直接运行体验拼图游戏。 在这个项目中,开发者可能运用...
在这个拼图游戏中,C#的类和对象机制可能被用来封装拼图的各种逻辑,例如图片处理、拼图块的移动和旋转、游戏状态的保存和恢复等。开发者可能创建了专门的类来表示拼图板、拼图块,甚至游戏逻辑本身,以实现良好的...
【Android拼图小游戏源代码详解】 对于初学者来说,学习Android开发是一个有趣且充满挑战的过程。这个"android拼图小游戏源代码"是一个很好的起点,它可以帮助你了解Android Studio的使用,掌握基本的Android编程...
本资源为一个基于C#开发的拼图游戏,包括游戏的设计、开发和测试三个阶段。游戏的主要功能包括图片尺寸自适应、图片动态分割、查看原图、随机切换图片、鼠标拖动拼图和自动判断拼图成功等。游戏的设计目标是设计开发...
2. 拼图块的操作:MFC中的CWnd类可以作为拼图块的基类,每个拼图块都是一个窗口对象,可以响应鼠标点击、拖动等事件。通过重载OnPaint函数,实现拼图块的绘制;利用OnLButtonDown等消息处理函数,实现块的选中与移动...
进行多轮测试,确保不同难度级别的拼图都能正常运行。 总的来说,"C# 简单拼图游戏"是一个结合了C#编程技术、图像处理、用户交互设计以及算法应用的项目。通过这个项目,学习者不仅可以提升C#编程技能,还能掌握...
开发者需要编写测试用例,覆盖各种可能的游戏状态,以确保拼图游戏在各种情况下都能正常运行。 总的来说,"拼图源代码"涵盖了图像处理、数据结构、算法设计、用户交互、错误处理和性能优化等多个方面,是学习和研究...
Java拼图游戏源代码是一种基于Java编程语言实现的益智类游戏,通常称为“拼图”或“拼图谜题”。这种游戏的核心是将一幅完整的图像分割成多个小块,玩家需要通过移动这些小块来恢复原图。下面将详细探讨Java拼图游戏...
开发者需要定义一个数据结构(如二维数组或自定义类)来存储拼图碎片,并实现相应的算法来处理碎片的操作。 4. 事件监听:为了响应用户的操作,如点击和拖动,我们需要设置事件监听器。Java中的`MouseListener`和`...
开发者需了解如何使用Bitmap、Canvas和Paint类进行图像加载、裁剪、旋转和绘制。同时,优化图像资源以减少内存占用也是必要的。 5. **触摸事件处理**:在Android中,GestureDetector和MotionEvent可以帮助处理用户...
1. Java基础:制作拼图游戏首先需要掌握Java编程语言的基础知识,包括语法、数据类型、流程控制、数组、类和对象等概念。Java面向对象的特性使得可以通过创建类来封装游戏的各个部分。 2. 图形用户界面(GUI)编程...