-
java画图旋转代码_Java图像旋转代码
2021-03-09 00:19:18Java程序实现图像正逆90度的旋转代码来源:http://www.itivy.com/java/archive/2012/3/9/634668887297849382.html1.[代码][Java]代码import java.awt.BorderLayout;import java.awt.Container;import java.awt....Java程序实现图像正逆90度的旋转
代码来源:
http://www.itivy.com/java/archive/2012/3/9/634668887297849382.html
1.[代码][Java]代码
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RotateImage {
public static void main(String[] args){
JFrame frame=new RotateImgFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class RotateImgFrame extends JFrame{
public RotateImgFrame(){
setTitle("RotateImgTest");
setSize(WIDTH,HEIGHT);
setAlwaysOnTop(true);
final ImgPanel imgPanel=new ImgPanel();
imgPanel.setBounds(0, 0, 400, 400);
Container con=getContentPane();
con.add(imgPanel);
antiRotateBtn=new JButton("逆转");
rotateBtn=new JButton("正转");
btnPanel=new JPanel();
btnPanel.add(rotateBtn);
btnPanel.add(antiRotateBtn);
con.add(btnPanel,BorderLayout.SOUTH);
antiRotateBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
imgPanel.setRotate(imgPanel.getRotate()-Math.PI/2);
imgPanel.repaint();
}
});
rotateBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
imgPanel.setRotate(imgPanel.getRotate()+Math.PI/2);
imgPanel.repaint();
}
});
}
public static final int WIDTH=400;
public static final int HEIGHT=450;
private JPanel btnPanel;
private JButton antiRotateBtn;
private JButton rotateBtn;
}
class ImgPanel extends JPanel{
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D) g;
g.fillRect(0, 0, 400, 400);
g2.rotate(rotate, 200, 200);
image=new ImageIcon("src/test.jpg").getImage();
int imgW=image.getWidth(this);
int imgH=image.getHeight(this);
g2.drawImage(image, (400-imgW)/2, (400-imgH)/2,this);
g2.dispose();
}
public Image getImage(){
return image;
}
public double getRotate(){
return rotate;
}
public void setRotate(double rotate){
this.rotate=rotate;
}
private Image image;
private double rotate=0;
}
-
java图形旋转代码_Java图像旋转代码
2021-03-05 14:01:46[java]代码库import java.awt.BorderLayout;import java.awt.Container;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event....[java]代码库import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RotateImage {
public static void main(String[] args){
JFrame frame=new RotateImgFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class RotateImgFrame extends JFrame{
public RotateImgFrame(){
setTitle("RotateImgTest");
setSize(WIDTH,HEIGHT);
setAlwaysOnTop(true);
final ImgPanel imgPanel=new ImgPanel();
imgPanel.setBounds(0, 0, 400, 400);
Container con=getContentPane();
con.add(imgPanel);
antiRotateBtn=new JButton("逆转");
rotateBtn=new JButton("正转");
btnPanel=new JPanel();
btnPanel.add(rotateBtn);
btnPanel.add(antiRotateBtn);
con.add(btnPanel,BorderLayout.SOUTH);
antiRotateBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
imgPanel.setRotate(imgPanel.getRotate()-Math.PI/2);
imgPanel.repaint();
}
});
rotateBtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
imgPanel.setRotate(imgPanel.getRotate()+Math.PI/2);
imgPanel.repaint();
}
});
}
public static final int WIDTH=400;
public static final int HEIGHT=450;
private JPanel btnPanel;
private JButton antiRotateBtn;
private JButton rotateBtn;
}
class ImgPanel extends JPanel{
public void paintComponent(Graphics g){
Graphics2D g2=(Graphics2D) g;
g.fillRect(0, 0, 400, 400);
g2.rotate(rotate, 200, 200);
image=new ImageIcon("src/test.jpg").getImage();
int imgW=image.getWidth(this);
int imgH=image.getHeight(this);
g2.drawImage(image, (400-imgW)/2, (400-imgH)/2,this);
g2.dispose();
}
public Image getImage(){
return image;
}
public double getRotate(){
return rotate;
}
public void setRotate(double rotate){
this.rotate=rotate;
}
private Image image;
private double rotate=0;
}
//源代码片段来自云代码http://yuncode.net
-
java画图旋转代码_如何在Java中旋转图像图标
2021-03-09 00:19:13旋转图像是非三角的,即使是90度也需要一定的工作量。所以,基于几乎所有关于旋转图像的问题,我会从…public BufferedImage rotate(BufferedImage image, Double degrees) {// Calculate the new size of the image ...旋转图像是非三角的,即使是90度也需要一定的工作量。
所以,基于几乎所有关于旋转图像的问题,我会从…
public BufferedImage rotate(BufferedImage image, Double degrees) {
// Calculate the new size of the image based on the angle of rotaion
double radians = Math.toRadians(degrees);
double sin = Math.abs(Math.sin(radians));
double cos = Math.abs(Math.cos(radians));
int newWidth = (int) Math.round(image.getWidth() * cos + image.getHeight() * sin);
int newHeight = (int) Math.round(image.getWidth() * sin + image.getHeight() * cos);
// Create a new image
BufferedImage rotate = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = rotate.createGraphics();
// Calculate the "anchor" point around which the image will be rotated
int x = (newWidth - image.getWidth()) / 2;
int y = (newHeight - image.getHeight()) / 2;
// Transform the origin point around the anchor point
AffineTransform at = new AffineTransform();
at.setToRotation(radians, x + (image.getWidth() / 2), y + (image.getHeight() / 2));
at.translate(x, y);
g2d.setTransform(at);
// Paint the originl image
g2d.drawImage(image, 0, 0, null);
g2d.dispose();
return rotate;
}
当您只旋转90度时,这将计算新图像所需的大小,以便能够以任何角度绘制旋转的图像。
然后它只是利用
AffineTransform
要操纵绘画发生的原点-使用这个,你会做很多。
然后,我加载图像,旋转它们并显示它们…
try {
BufferedImage original = ImageIO.read(getClass().getResource("domino.jpg"));
BufferedImage rotated90 = rotate(original, 90.0d);
BufferedImage rotatedMinus90 = rotate(original, -90.0d);
JPanel panel = new JPanel();
panel.add(new JLabel(new ImageIcon(original)));
panel.add(new JLabel(new ImageIcon(rotated90)));
panel.add(new JLabel(new ImageIcon(rotatedMinus90)));
JOptionPane.showMessageDialog(null, panel, null, JOptionPane.PLAIN_MESSAGE, null);
} catch (IOException ex) {
ex.printStackTrace();
}
我更喜欢用
ImageIO
加载图像,因为它抛出
IOException
当事情出错时,宁愿默默地失败
ImageIcon
.
您还应该将资源嵌入到应用程序的上下文中,这使得在运行时加载它们更加容易。取决于IDE和项目的设置方式,您的设置方式将发生变化,但在“大多数”情况下,您应该能够将资源直接添加到源目录(最好是子目录中),并且IDE将使您可以使用它并在导出项目时对其进行打包
-
java绘图 图片旋转 实例代码
2011-04-02 11:25:24java绘图 图片旋转 实例代码java绘图 图片旋转 实例代码 -
java画图旋转代码_java – x-y绘图和轴标签的旋转文本
2021-03-09 00:20:02下面的代码绘制了一些简单的x-y数据,但它有两个我不知道如何解决的问题.首先,它绘制了一些数据点的负值,这意味着在x轴下方向南延伸的线.由于数据点是随机选择的,因此您可能需要稍微调整帧的大小,以便以显示此错误的...下面的代码绘制了一些简单的x-y数据,但它有两个我不知道如何解决的问题.
首先,它绘制了一些数据点的负值,这意味着在x轴下方向南延伸的线.由于数据点是随机选择的,因此您可能需要稍微调整帧的大小,以便以显示此错误的方式查看要绘制的新随机数.所有数据值都是正数,因此我希望所有偏转都向北投射到蓝色底部标记线上方,并且我需要确保没有偏转在蓝色底部标记线下方向南延伸.
其次,y轴标签在屏幕上占用太多空间.它需要旋转-90度.但是,我看到的所有示例都涉及使用graphics2d对象旋转整个面板.我不想旋转整个面板.相反,我只想旋转y轴标签的文本.
任何人都可以告诉我如何更改下面的代码来解决这两个具体的问题?
代码在以下两个文件中:
GUI.java
import java.awt.*;
import javax.swing.*;
class GUI{
GUI() {
// Create a new JFrame container.
JFrame jfrm = new JFrame("X-Y Plot");
// Specify FlowLayout for the layout manager.
jfrm.getContentPane().setLayout(new FlowLayout());
int frameHeight = 400;
int frameWidth = 300;
// Give the frame an initial size.
jfrm.setSize(frameWidth, frameHeight);
// Terminate the program when the user closes the application.
jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Create a text-based label.
JVertLabel myVLabel = new JVertLabel("y-axis label");
int width = myVLabel.WIDTH;
PaintPanel myPP = new PaintPanel(frameWidth-width-50-20,frameHeight-70);
jfrm.add(myPP);
jfrm.add(myVLabel);// Add the label to the frame.
// Display the frame.
jfrm.setVisible(true);
}
public static void main(String args[]) {
// Create the frame on the event dispatching thread.
SwingUtilities.invokeLater(new Runnable() {public void run(){new GUI();}});
}
public class JVertLabel extends JComponent {
private String text;
public JVertLabel(String s) {
text = s;
}//constructor
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.rotate(Math.toRadians(-90));
g2d.drawString(text, 0, 0);
}
}
}
PaintPanel.java
import java.awt.*;
import javax.swing.*;
import java.util.*;
class PaintPanel extends JPanel {
Insets ins; // holds the panel's insets
Random rand; // used to generate random numbers
PaintPanel(int w, int h) {
setOpaque(true);// Ensure that panel is opaque.
setPreferredSize(new Dimension(w, h));// Set preferred dimension as specfied.
rand = new Random();
}
protected void paintComponent(Graphics g) {// Override paintComponent() method.
super.paintComponent(g);// Always call superclass method first.
int height = getHeight();// Get height of component.
int width = getWidth();// Get width of component.
ins = getInsets();// Get the insets.
// Get dimensions of text
Graphics2D g2d = (Graphics2D) g;
Font font = new Font("Serif", Font.PLAIN, 12);
FontMetrics fontMetrics = g2d.getFontMetrics();
String xString = ("x-axis label");
int xStrWidth = fontMetrics.stringWidth(xString);
int xStrHeight = fontMetrics.getHeight();
String yString = "y-axis-label";
int yStrWidth = fontMetrics.stringWidth(yString);
int yStrHeight = fontMetrics.getHeight();
int leftStartPlotWindow = ins.left + 5 + yStrWidth;
int hPad = 3;
// Fill panel by plotting random data in a bar graph.
for (int i = leftStartPlotWindow + hPad; i <= width - leftStartPlotWindow - hPad + yStrWidth + 1; i += 4) {
int h = Math.abs(rand.nextInt(height - ins.bottom));//Get rand# betw/0 and max height of drawing area.
// If generated value w/in or too close to border, change it to just outside border.
if (h <= ins.top) {
h = ins.top + 1;
}
g.drawLine(i, Math.abs(height - ins.bottom - xStrHeight - 5), i, h);// Draw a line that represents data.
}
g.setColor(Color.blue);
g.drawRect(leftStartPlotWindow, ins.bottom + 2, width - leftStartPlotWindow - ins.right - hPad, height - xStrHeight - 6);
g.setColor(Color.red);
g.drawRect(ins.left, ins.bottom, width - ins.left - 1, height - ins.bottom - 1);
g.drawString(xString, (width / 2) - (xStrWidth / 2), height - ins.bottom - 6);
g.drawString(yString, ins.left, height / 2);
}
}
-
JAVA算法:矩阵旋转(JAVA代码)
2019-06-04 20:52:29JAVA算法:矩阵旋转(JAVA代码) 给定一个N*N的二维矩阵,顺时针旋转90度后,输出该矩阵。 例如: 给定矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 顺时针旋转90度后,输出结果: 13 9 5 1 14 10... -
Java实现图片旋转的代码.rar
2019-07-10 18:33:29Java实现图片旋转的代码,可以垂直和水平旋转图片,可自定义旋转角度,垂直反转图片的示例效果如截图所示。实现原理是将载入到图像缓冲区的图片数据反转,效果还可以。 -
java 旋转字体_java2d特效 文字旋转
2021-02-27 18:25:17将图形围绕某点按照给定的角度进行旋转效果图:源代码:package java2d;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import javax... -
【JAVA】 图片旋转实现代码
2019-02-15 15:22:31import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.RenderingHints; import java.awt.geom.AffineTran... -
java旋转矩阵
2018-03-16 16:09:40今天写了java旋转矩阵,参考了下网上的代码。旋转矩阵思路比较简单,其实就是按照人的思维方法(可能有更优解,但是我比较笨)其实就是一个数组,先从左到右,然后从上到下,然后从右到左,最后从下到上,循坏一周后... -
Java 旋转向量
2020-04-10 12:43:30使用 swap() 函数来旋转向量 完整代码 import java.util.Collections; import java.util.Vector; public class Main { public static void main(String[] args) { Vector<String> v = new Vector(); v.... -
转盘旋转抽奖用java代码的实现
2018-07-14 11:59:36该资源里面有项目做出来的效果图,解压就可以看到,当指针指向任意区域的奖项,都会有个弹窗提示几等奖 -
Java旋转游戏
2020-07-14 20:41:10【代码演示】 import java.util.Scanner; class Main { public static void main(String[] args) { Scanner sr = new Scanner(System.in); int n = sr.nextInt(); int m = sr.nextInt(); int[][] num = new int... -
Qt开发记录12——功能开发——无损偏转(无损地旋转图像)——由Java语言代码改成Qt的C语言代码
2020-09-07 09:52:11无损偏转(无损地旋转图像)Java语言代码1、toTrimRotateImg2、ImageHelper类C语言代码1、effect.cpp中2、effect.h中 Java语言代码 1、toTrimRotateImg /** * 调整旋转角度 * @return 调整旋转角度后的图片流 */ ... -
Android 通过Java代码控制屏幕旋转
2019-03-27 13:51:00//判断当前是否为横屏,判断是否旋转 if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT){ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); ... -
java坐标旋转算法_用Java旋转数据和文本的坐标平面
2021-03-08 08:55:28我需要:1.)移动原点并旋转坐标平面,使x值向右前进,y值从新原点向上进行(需要在下面的代码中为内部蓝色矩形的左下角).这将使我能够在下面的代码中绘制x,y坐标对的点.2.)绘制数据图的y轴上的抽动标记的旋转标签.下面... -
JAVA旋转字符串
2019-12-26 12:08:06在LintCode做题的时候遇到的 本身是一个简单的题目但是在没有看清说明以及自身考虑不周的情况下还是折腾了一会儿 记录一下 说明 给定一个字符串(以字符数组的形式给出)和一个偏移量...正确代码 public class Solut... -
java 旋转图片_Java实现图片翻转以及任意角度旋转
2021-02-12 09:41:55最近几天在做一个项目,因为涉及到了图片(绝大部分都不是整图,是把一张张的大图切成小图,也就是Title)的翻转以及90°旋转,弄得焦头烂额。在网上搜索好几天,发现用到的方法都是比较公式化的,对于只是在绘图的... -
Java数据结构与算法:平衡二叉树AVL、左旋转、右旋转、双向旋转、代码实现
2020-06-14 15:29:51代码实现 平衡二叉树 AVL 平衡二叉树是对二叉排序树的增强。 AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。增加和删除可能需要通过一次或多次... -
旋转二维数组的两个思路及JAVA代码
2020-08-07 10:02:29import java.util.Arrays; //给定一个 n × n 的二维矩阵表示一个图像。 //将图像顺时针旋转 90 度。 //说明: //你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 ... -
CCF之图像旋转——2015-03 第一题(Java满分代码)
2019-03-09 21:20:14旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。 输入格式 输入的第一行包含两个整数n... -
java graphics旋转_旋转Java Graphics2D矩形?
2021-02-27 20:44:33如何在Java中旋转矩形?这是我的一些代码:package net.chrypthic.Space;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Space extends JPanel implements ActionListener{Timer ... -
剑指offer 旋转数组的最小数字 java代码
2018-06-05 10:54:37输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 思路:旋转数列可以... -
java 矩形旋转_java – 获取旋转矩形的角
2021-02-27 14:27:15我有一个围绕它的中间旋转的矩形,我有另一个矩形,我想连接到旋转矩形的右上角.问题是我不知道如何到达角落,以便第二个矩形总是会粘在那个角落.这是我的示例代码.现在第二个矩形将始终在同一个地方,这不是我追求的... -
java swing 图片旋转_java2d特效 文字旋转
2021-02-28 09:49:43将图形围绕某点按照给定的角度进行旋转效果图:源代码:package java2d;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import javax... -
Java 旋转90°矩阵
2019-08-12 22:36:04旋转90°矩阵 {1 ,2 ,3 , 4 }, {5 ,6 ,7 , 8 }, {9 ,10,11,12}, {13,14,15,16} 代码片. public class main { public static void main(String args []) { int [][]m= {{1,2,3,4},{5,6,7,8},{9,10,11... -
java图形选旋转函数_java 图形旋转操作
2021-02-28 14:23:12其实这不算原创了,只是把别人的代码做了下整理,方便同样需要的朋友直接使用了。:)原文请见这里。package myclass;import java.awt.*;import java.awt.image.*;import java.awt.image.*;import java.awt.geom.... -
java 图片旋转保存_java实现图片旋转90度的问题
2021-02-26 12:56:35怎么用java写一个图片旋转90、180、270、360度的函数,并将旋转后的图片用JLabel显示来,求各位路过的大神指点,以下是我之前写的代码,无论怎么修改都有问题,图片旋转90度后只显示部...怎么用java写一个图片旋转90... -
java图片镜像代码_java图片基本操作-缩放,旋转,镜像,拼接
2021-03-07 22:38:43}/*** 旋转*/ public static void rotate(BufferedImage bufImage, int degree) throwsIOException {int w = bufImage.getWidth();//得到图片宽度。 int h = bufImage.getHeight();//得到图片高度。 int swidth = 0...