JAVA中如何将图片在不做成控件的情况下旋转一个角度?
解决方案 »
- 安卓ksoap2调用webService问题,ksoap2传递byte数组怎么传递
- 在线等!!!swing Jtable 单元格编辑后,数据自动保存并更新到数据库中???
- 在JSP中怎么显示EXCEL文件啊?望高手指教·
- MouseAdapter?
- 一个很奇怪的问题!!!!1
- class Hello 与 class HELLO 编译时候的迷惑!
- 求问一个最简单的小程序
- 恳请大家帮助
- 用jdbc-odbc连接access库,怎样用insert into插入一行?
- 在JAVA中,如何做到每隔相同时间,便访问数据库一次?
- //这段C基本通过,帮改成java;实现哈夫曼树的程序
- java 24点 算法
java图像变换类,可以实现各种图形图像变化处理
我刚才去了查一下,我再研究一下
* 目标图像
* @param degree
* 旋转角度
* @return
*/
public static BufferedImage rotateImage(final BufferedImage bufferedimage,
final int degree) ...{
int w = bufferedimage.getWidth();
int h = bufferedimage.getHeight();
int type = bufferedimage.getColorModel().getTransparency();
BufferedImage img;
Graphics2D graphics2d;
(graphics2d = (img = new BufferedImage(w, h, type))
.createGraphics()).setRenderingHint(
RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);
graphics2d.drawImage(bufferedimage, 0, 0, null);
graphics2d.dispose();
return img;
}
java图像变换类,可以实现各种图形图像变化处理
package com.iwode.jason;import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.ImageIO;/**
*
* @author Jason
* @version 创建时间:2008-11-4 下午12:59:17
* @contact mailto:[email protected]
*
*/
public class RotateImage { /**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedImage bufferedimage = ImageIO.read(new File("close.gif"));
BufferedImage img;
int degree = 30;
int w = bufferedimage.getWidth();
int h = bufferedimage.getHeight();
int type = BufferedImage.TYPE_INT_RGB;
Graphics2D graphics2d;
(graphics2d = (img = new BufferedImage(w, h, type)).createGraphics())
.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics2d.rotate(Math.toRadians(degree), w / 2, h / 2);
graphics2d.drawImage(bufferedimage, 0, 0, null);
ImageIO.write(img, "gif", new File("close2.gif"));
graphics2d.dispose();
}}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
public class TextRotate3 extends Applet
{
Graphics g;
Image joe,joe1;
AffineTransform affine;
BufferedImage sourceBI;
AffineTransform at;
BufferedImage destinationBI = null;
AffineTransform affine1;
public void init()
{
joe = getImage(getDocumentBase(),"Tuo/4.png");
joe1 = getImage(getDocumentBase(),"Tuo/5.png");
}
public void run()
{
}
public void paint(Graphics g)
{
g.drawImage(joe1, 10,10, this);
PaintOne(g,joe,35.0,30,30);
PaintOne(g,joe,105.0,30,50);
}
public void PaintOne(Graphics g,Image j, double i,int x,int y)
{
Graphics2D g2 = (Graphics2D)g;
affine = g2.getTransform();
g2.transform(affine);
g2.rotate(i*Math.PI/180.0,y,x);
g2.drawImage(j, affine, this);
g2.setTransform(affine);
}
void main()
{
init();
paint(g);
}
}
*
*/
package com.iwode.jason;import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.Random;import javax.imageio.ImageIO;
import javax.swing.JApplet;/**
*
* @author Jason
* @version 创建时间:2008-11-8 上午09:09:23
* @contact mailto:[email protected]
*
*/
public class ImageApplet extends JApplet { BufferedImage bufferedimage; @Override
public void init() {
// TODO Auto-generated method stub
super.init();
try {
this.bufferedimage = ImageIO.read(new File("D:\\close.gif"));
} catch (Exception ex) {
ex.printStackTrace();
}
} public void paint(Graphics g) {
rotatePic(g,10);
} public void rotatePic(Graphics g, int degree) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.rotate(Math.toRadians(degree), 0, 0);
g2.drawImage(bufferedimage, 125, 40, null);
}}
运行Applet就可以了,我试了10度,30度和60度,无什么问题。
private String status;
// 旋转角度
private int degree;
//目标图片高,宽
private int imgWidth;
private int imgHeight;
// 把图片画到JPanel上
private class DrawImage extends JPanel {
/**
* 继承序列化数字,提示Java运行平台在调用或传输过程中对这个类中的数据进行特殊处理,以保证数据的完整性。
*/
private static final long serialVersionUID = 1L; // 重写JPanel的方法paint(Graphics g),满足特殊需要。
@Override
public void paint(Graphics g) {
Color c = g.getColor();
if (status != null && !status.equals("") && status.equals("whirl")) {
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.rotate(Math.toRadians(degree), 0, 0);
g2.drawImage(bufferedImage, 0, 0, null);
imgHeight = bufferedImage.getHeight();
imgWidth = bufferedImage.getWidth();
} else {
g.drawImage(bufferedImage, 0, 0, imgWidth, imgHeight, null);
}
g.setColor(c);
}
} public void whirlImage(ActionEvent e) { status = "whirl";
degree = 90;
/**
* 构造一个 Dimension,并将其初始化为指定宽度和高度。 将组件的首选大小设置为常量值dimension(尺度,大小)
*/
drawImage.setPreferredSize(new Dimension(imgWidth, imgHeight));
this.add(drawImage, BorderLayout.CENTER);
this.pack();
}