- 浏览: 680913 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (181)
- Matlab (16)
- Java (26)
- autoHotkey (4)
- openCV (1)
- C++ (50)
- PDF-XChange Viewer (2)
- 学术 (11)
- javascript (4)
- linux (11)
- SWT (9)
- latex (7)
- GAE (2)
- windows (6)
- C# (3)
- PS (20)
- JNI (4)
- latex,批处理 (0)
- 批处理 (4)
- Android (5)
- 矩阵论 (1)
- SVM (1)
- 概率图模型 (0)
- Python (12)
- Eigen (5)
- 编程题 (1)
- MKL (1)
- 神经网络 (9)
- 最优化 (2)
- 摄影 (1)
- PPT (0)
- After Effects (3)
- CUDA (3)
- caffe (0)
- MXNet (2)
- svn (1)
- R (0)
- 虚拟机 (0)
- tensorflow (7)
- theano (1)
- Keras (1)
- vim (1)
- xgboost (1)
- spark (6)
- eclipse (2)
- word2vec (0)
- hadoop (1)
- dmlc (1)
- git (0)
最新评论
-
jeffersonz:
请问大神,这个插件记录下来的脚本为什么不能再Extendscr ...
PhotoShop - 记录PS的所有操作为JavaScript代码 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道cherish ...
Eigen的编译选项;MKL的使用 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道 您好,您的工 ...
Eigen的编译选项;MKL的使用
应用程序入口
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; @SuppressWarnings("serial") public class DrawNameOnBg extends JFrame { private JTextField textFrameRate; private JTextField textBlockSize; private JPanel panel; // private PicPanel picPanel = new PicPanel(); private PicPanelUseBuffer picPanel = new PicPanelUseBuffer(); public DrawNameOnBg() { setUndecorated(true); getContentPane().setLayout(new BorderLayout()); getContentPane().add(picPanel,BorderLayout.CENTER); getContentPane().add(getPanel(), BorderLayout.SOUTH); this.pack();//自动调整窗口大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null);//移至屏幕中心 setVisible(true); } public static void main(String[] args) { new DrawNameOnBg(); } /** * @return 按钮面板 */ protected JPanel getPanel() { if (panel == null) { panel = new JPanel(); //帧率 final JLabel label_1 = new JLabel(); label_1.setText("帧率:"); panel.add(label_1); textFrameRate = new JTextField(); textFrameRate.setText("20 "); panel.add(textFrameRate); //块大小 final JLabel label = new JLabel(); label.setText("块大小:"); panel.add(label); textBlockSize = new JTextField(); textBlockSize.setText(picPanel.subImWidth+" "); textBlockSize.setMinimumSize(new Dimension(30, 20)); panel.add(textBlockSize); //演示按钮 final JButton buttonShow = new JButton(); buttonShow.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { new Thread(){ @Override public void run() { try { int temp = Integer.valueOf(textBlockSize.getText().trim()); picPanel.subImWidth=temp; picPanel.subImWidth=temp<5?5:temp; picPanel.subImWidth=temp>120?120:picPanel.subImWidth; textBlockSize.setText(String.valueOf(picPanel.subImWidth)); } catch (Exception e2) { textBlockSize.setText(String.valueOf(picPanel.subImWidth)); } try { int temp = Integer.valueOf(textFrameRate.getText().trim()); if(temp<1) picPanel.frameRate=1; else if(temp>24) picPanel.frameRate=24; else picPanel.frameRate=temp; textFrameRate.setText(String.valueOf(picPanel.frameRate)); } catch (Exception e2) { textFrameRate.setText(String.valueOf(picPanel.frameRate)); } picPanel.restart(); }}.start(); } }); panel.add(buttonShow); buttonShow.setText("演示"); //退出按钮 final JButton buttonExit = new JButton(); buttonExit.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { System.exit(0); } }); buttonExit.setText("退出"); panel.add(buttonExit); //旋转复选框 final JCheckBox checkBoxRotate = new JCheckBox(); checkBoxRotate.setSelected(picPanel.rotate); checkBoxRotate.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { picPanel.rotate=!picPanel.rotate; } }); checkBoxRotate.setText("旋转"); panel.add(checkBoxRotate); } return panel; } }
主要的Jpanel
import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.SwingUtilities; public class PicPanelUseBuffer extends JPanel { /** * */ private static final long serialVersionUID = 1L; BufferedImage bgIm, nameIm;//背景图片和名字图片 BufferedImage[][][] nameSubIms;//分割后的图片,最后一维为各个方向的图片 Point posCenters[][];//各个小图的中心坐标 int subImWidth = 7;//分割后图片的宽度 int x; //名字图片的左上角坐标 int y = 30; int xCenter;//汇聚中心坐标 int yCenter = -30; int frames = 50;//帧数 boolean act = false;//是否动画,控制绘图用 int currentFrame;//当前帧 final int coefficient = 10;//将汇聚中心到小图的距离分为10份,作为小图移动的步长 int frameRate = 20;//帧率 AffineTransform tr; //仿射变换对象 final int directionNum = 8;//图片旋转方向数目 int direction = 0;//当前帧绘制的图片的方向的序号 boolean rotate = true;//控制是否旋转 public PicPanelUseBuffer() { try { setDoubleBuffered(true); bgIm = ImageIO.read(new File("bg.jpg")); //在背景上写上名字和E-mail Graphics2D g = bgIm.createGraphics(); g.setColor(Color.BLUE); g.setXORMode(Color.white); g.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20)); g.drawString("制作:2009310399 梁超 @ 清华", 5, g.getFontMetrics().getHeight()); String email = "E-mail: essay1986@yahoo.com.cn"; g.drawString(email, bgIm.getWidth() - SwingUtilities.computeStringWidth(g.getFontMetrics(), email) - 5, bgIm .getHeight() - 10); g.dispose(); nameIm = ImageIO.read(new File("name.png")); x = (bgIm.getWidth() - nameIm.getWidth()) >> 1;//使得名字绘制在中心 xCenter = bgIm.getWidth() / 2; tr = new AffineTransform(); init(); } catch (IOException e) { e.printStackTrace(); } } private void init() {//初始化分割后的图像 nameSubIms = new BufferedImage[nameIm.getHeight() / subImWidth][nameIm.getWidth() / subImWidth][directionNum]; posCenters = new Point[nameSubIms.length][nameSubIms[0].length]; for (int i = 0; i < nameSubIms.length; i++) { for (int j = 0; j < nameSubIms[i].length; j++) { nameSubIms[i][j][0] = nameIm.getSubimage(j * subImWidth, i * subImWidth, subImWidth, subImWidth);//旋转前的图像 int xC = x + j * subImWidth + (subImWidth >> 1);//小图的中心坐标 int yC = y + i * subImWidth + (subImWidth >> 1); // System.out.println(xC+" "+yC+" "+(xC - // xCenter)+" "+(yC - yCenter)); posCenters[i][j] = new Point(xC - xCenter, yC - yCenter);//到汇聚中心的向量 for (int k = 1; k < nameSubIms[i][j].length; k++) {//产生各个方向的图片,注意由于旋转后图片变大,有删减 nameSubIms[i][j][k] = new BufferedImage(subImWidth, subImWidth, BufferedImage.TYPE_INT_ARGB_PRE); Graphics2D g = nameSubIms[i][j][k].createGraphics(); double angle = Math.PI * 2 / directionNum * k; if (xC < xCenter) angle = -angle; // tr.rotate(angle, subImWidth / 2, subImWidth / 2); tr.setToRotation(angle, subImWidth / 2, subImWidth / 2); g.drawImage(nameSubIms[i][j][0], tr, this); // System.out.println(nameSubIms[i][j][k]+" "+subImWidth); } } } } @Override public void paint(Graphics g) { // final float alphaLow = 0.7f; super.paint(g); g.drawImage(bgIm, 0, 0, this);//绘制背景 Graphics2D g2 = (Graphics2D) (g); if (act) {//动画时 currentFrame--; direction++;//改变分割图片的方向 if (direction >= directionNum) direction = 0; //绘制分割后的图片 for (int j = 0; j < nameSubIms.length; j++) { for (int k = 0; k < nameSubIms[j].length; k++) { int xPos = xCenter + posCenters[j][k].x * Math.abs(currentFrame) / coefficient - (subImWidth >> 1);// + (int) ((Math.random() - // 0.5) * subImWidth); int yPos = yCenter + posCenters[j][k].y * Math.abs(currentFrame) / coefficient - (subImWidth >> 1);// + (int) ((Math.random() - // 0.5) * subImWidth); tr.setToTranslation(xPos, yPos); if (rotate) g2.drawImage(nameSubIms[j][k][direction], tr, this); else g2.drawImage(nameSubIms[j][k][0], tr, this); ; } } } else { // ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, // alphaLow); // g2.setComposite(ac); g2.drawImage(nameIm, x, y, this); } } public void restart() { if (subImWidth != nameSubIms[0][0][0].getWidth())//改变分割图像大小,重新初始化 init(); act = true; currentFrame = frames; while(currentFrame > -coefficient) { try { Thread.sleep(1000 / frameRate); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } repaint(); } act = false; repaint(); } @Override public void update(Graphics g) { repaint(); } @Override public Dimension getPreferredSize() { return new Dimension(bgIm.getWidth(), bgIm.getHeight()); } }
发表评论
-
lambda表达式
2014-08-20 21:47 1882仅作备忘,要学习还是看给的链接吧 1、C++ 中文介绍:htt ... -
利用Doxygen生成C++、Java文档
2013-04-08 16:15 4387示例程序、配置文件及doxygen常见参数文字版参见本文附件 ... -
删除citeulike导出的bib文件中的中文字符,使之能在WinEdt中读取
2012-12-06 18:57 1780在使用Citeulikehttp://citeulike.or ... -
使用jsoup分析网页
2012-12-05 16:12 2656之前用过HTMLParser,许久不更新的东西了,印象中也没那 ... -
JNI中基本类型数组的传递方法(无需拷贝数据!!!)
2012-10-23 17:11 182550、先来看一下主要用到哪些函数: GetIntArrayEle ... -
swig--在java、C#中调用c++写的DLL(以vs2012配置为例)
2012-10-02 22:06 70631、下载、安装: 到http://www.swig.org/d ... -
GAE学习笔记——静态文件、资源文件;GAE中使用velocity模板
2012-07-13 21:49 1415参考资料:https://developers.google. ... -
Google application engine 的Eclipse配置方法
2012-07-11 19:52 15241、安装google的eclipse插件 到https://d ... -
javadoc命令
2012-04-06 14:54 1364以下内容引用自(原文更全):http://hi.baidu.c ... -
java7文件夹监控
2012-04-04 11:23 2932java7的文件夹监控真是太烂了,折腾了一天,封装的差不多了, ... -
SWT学习笔记——JFace中TableViewer的使用及注意事项
2012-04-01 15:26 3381问题: 1、使用CellEditor ... -
SWT学习笔记——JFace中TableViewer的使用及注意事项
2012-04-01 14:52 0问题: 1、使用CellEditor时出现org.eclips ... -
SWT学习笔记——SWT、JFace的配置(含源代码、javadoc的获取)
2012-04-01 14:08 2442具体的可以看官方的http://wiki.eclipse.or ... -
SWT学习笔记7——组件背景图片,鼠标事件,鼠标样式
2012-03-31 11:00 3660import org.eclipse.swt.grap ... -
SWT学习笔记6——Shell相关的事件
2012-03-31 10:23 1497这里有详细的事件列表:http://blog.csdn.net ... -
SWT学习笔记5——简易的多标签文本编辑器
2012-03-30 22:18 2251import java.io.BufferedRead ... -
SWT学习笔记4——系统托盘 system tray
2012-03-30 15:59 1539import org.eclipse.swt.widg ... -
SWT学习笔记3——颜色、字体、图片
2012-03-30 09:41 5803import org.eclipse.swt.gra ... -
SWT笔记2——测试UI线程的事件处理
2012-03-29 21:36 1375import org.eclipse.swt.widg ... -
SWT笔记1,组件的关系,屏幕信息
2012-03-29 21:20 1395import org.eclipse.swt.widg ...
相关推荐
这是一款采用原生js+css3制作的网页图片展示动画特效,3D图片分割拼接动画特效代码。
该程序用C++Builder编写,对图像进行了均匀分割成很多小块,每一小块的像素点灰度值有该小块灰度平均值所取代,得到图像均匀逼近的效果
稀疏分解图像重建程序,把图像分解成多个小块图像,然后再各个子块重建后边缘处理后合并成整个图像.rar
目前,解决这一问题的有效办法是将海量数据分割成小块数据,由分布的处理节点并行理.这种分布式并行处理的难点是分割机制,为了不破坏数据的完整性,只有采用复杂的分割算法,这同时也使分割 模块成为检测系统新的瓶颈....
文件分割工具!用于将大体量日志文件分割成多个小块,方便快捷。
这是用java编写的一个小游戏,复制后编译运行即可。游戏界面为25个小块组成的大窗户,每点击一个小块,该小块及周围的四个小块改变颜色,直到所有的小块变成白色就算成功了。
大的照片、图片自动分割程序,例如:按照5*10 或10*10将照片、图片分成很多小块,并保存成1-1,1-2,2-1,2-2的名称。
LSC超像素分割,可将一副图像分割成大小均匀,边界光滑的小块。可用于图像的预处理
将数据集图像分块提取,分为两种策略。param中设置图像块大小与步长等参数。然后运s01生成数据集的npy文件,再运行s02提取图像块。图像块的提取策略再patch_extractor.py文件中设置,一种是随机,一种是按得分高低。
这不是一个传统意义上的文件分割软件,因为它所能做的不仅仅是将一个文件分割成小块并能将其合并,它还能将其它类型的文件合并(例如文本文件,Mr.Cool文件以及某些分割软件分割后的文件)。你只需点击鼠标右键就可...
①将图片分割为小块。由于一般的图片信息处理算法都是针对8×8的像素矩阵来说明的,所以应当将原图片划分为多个8×8的小块,进而方便后续压缩、编码过程中能够逐一对每个小块进行操作。 ②将图片更换为YCbCr方式存储...
可能原因为,程序在刷新视图时并没有全部擦除重画,只是根据形状在上一次的显示位置将这一小块重画了一个空块以覆盖 仔细测试过,后台明明执行了这个过程,视图却没有被擦除掉,不知是不是JDK的问题 2. 一直按住...
有16个小块,拼成一个整体。背后是通过二维数组来进行实现的,也可以根据自己的需求修改图片。或者将图片改为。九块或者四块。亦可以更多。通过修改可以增加对Java二维数组的了解。该项目中还有求助等其他模块。也...
这不是一个传统意义上的文件分割软件,因为它所能做的不仅仅是将一个文件分割成小块并能将其合并,它还能将其它类型的文件合并(例如文本文件, Mr.Cool文件以及某些分割软件分割后的文件)。你只需点击鼠标右键就可...
该程序可能把一个大文件安指定的大小分割成小块,煞有然后再把它组合起来,适用于移动媒介小,要移动大型文件进使用
将任一图像进行分块,默认为灰度图像,如需处理彩色图像,加入三通道分量即可。适用于MATLAB,另外,请记得更改图片读取路径!如需m*n,再设一个行参数m即可。
当鼠标移动到图片上时,图片会分成四个小块分别想四个角移动推出显示框,并显示图片后面的内容。
中将图片分成小块PPT学习教案.pptx