安卓 为啥我旋转图片后图片缩小了,请高手帮帮忙啊
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓 为啥我旋转图片后图片缩小了,请高手帮帮忙啊相关的知识,希望对你有一定的参考价值。
final Bitmap mySourceBmp =BitmapFactory.decodeResource(getResources(),
R.drawable.speed);
final int widthOrig = mySourceBmp.getWidth();
final int heightOrig = mySourceBmp.getHeight();
// 程序刚运行,加载默认的Drawable
imaSpeedView.setImageBitmap(mySourceBmp);
scaleAngle = 1;
Matrix matrix = new Matrix();
// 使用Matrix.postRotate的方法设置维度
//matrix.setRotate(6.75f* scaleAngle, 398, 270);
matrix.postRotate(6.75f* scaleAngle);
// matrix.postRotate(6.75f * scaleAngle, 40, 204);
// matrix.setRotate(6.75f * scaleAngle);
// 创建新的Bitmap对象
Bitmap resizedBitmap = Bitmap.createBitmap(mySourceBmp, 0, 0,
widthOrig, heightOrig, matrix, true);
BitmapDrawable myNewBitmapDrawable = new BitmapDrawable(
resizedBitmap);
imaSpeedView.setImageDrawable(myNewBitmapDrawable);
JAVA界面问题高手帮帮忙
我想让一张图片做为这个软件的背景图片,怎么做啊! 切换面板后图片仍然能显示出来 高手们帮帮忙吧!
就是 图片要始终显示在主窗口中,我在一个窗口中放多个面板无论在哪个面板 主窗口的图片都要显示出来 谢谢
加载图像的示例:
import java.awt.*;
import java.awt.event.*;
import java.net.*; //要使用URL类应需要包含java.net包。
import java.awt.image.*;
public class A extends Frame
Image im1,im2; URL u1,u2;
public A() setSize(333,333); setVisible(true);
public void paint(Graphics g)
//使用java.awt.Toolkit类中的getImage主法来反回Image类型的对象该Image对象包含图片文件所在的地址。
//要注意文件地址的表示方式:可以使用"/"或"\\"来表示文件地址的分隔符。
im1=Toolkit.getDefaultToolkit().getImage("e:/1.jpg");
//使用URL类的对象来设置图片文件的地址,注意URL会抛出异常因此语句应在try块中
//注意使用URL类的对象表示文件地址的方式,表示本地文件的位置时应使用"file:/"的形式开头,后面再跟文件的地址。
tryu2=new URL("file:/e:\\2.jpg");catch(Exception e)
im2=Toolkit.getDefaultToolkit().getImage(u2);
//调用Graphics类中的drawImage方法绘制图像。关键概念:Component类实现了ImageObserver接口,因此每个继承自Component类的组件都是一个图像观察者(ImageObserver)
//注意,由im1反回的图片在位置(50,50)处显示,并把图像缩放在长100宽都为100的矩形内显示,其第三个参数图像观察者(ImageObserver)使用的是Frame类本身,因为该程序继承身Framd类,因此是this
g.drawImage(im1, 50, 50,100,100, this); g.drawImage(im2,170,170,100,100,this);
public static void main(String args[]) A ma=new A();
java.awt.image包中定义的三个接口(ImageProducer, ImageObserver, ImageConsumer):
首先我们要知道的是,图像的加载与图像生产者(ImageProducer),图像观察者(ImageObserver),图像消费者(ImageConsumer)有关。这三个都是java.awt.image包中定义的三个接口。这三个接口的具体内容这里先作了解,我们只要知道这三个接口在加载图像时的作用就行了。
图像生产者,图像观察者,图像消费者的作用:
首先图像是由一个名叫图像生产者(ImageProducer)加载的,图像生产者的作用就是生产图像的位,并将他们传递给图像消费者(ImageConsumer)。图像消费者接收由图像生产者产生的位。当图像生产者加载图像时,图像观察者(ImageObserver)可以监视其进展情况。因为Component类实现了ImageObserver接口,因此AWT构件就是一类图像观察者,当它们发现图像被完全加载时,它们重绘制它们自身。所以调用drawImage()寄存器中的this构件作为观察者。当图像完全加载时,该构件被重绘制,paint()方法被调用,再次调用drawImage()方法来绘制图像中所有的位。
图像在程序中的加载方式:
1、首先应创建一个Image对象,但不能初始化(因为Image类是抽象的):比如Image img;
2、使用一个能反回Image对象的方法,并把该方法反回的对象赋给Image创建的对象。该方法包含了欲显示的图片文件的路径(包括本地和网络路径)。在应用程序中应使用java.awt.Toolkit类中的getImage方法,因为在Component类中没有关于反回Image对象的方法,要注意Toolkit是一个抽象类。而对于Applet类,则可以直接使用Applet类中定义的getImage方法。
3、然后使用Graphics类中的drawImage方法,将图片绘制到组件上。一般应重载paint方法。
详细介绍图像在程序中加载方式的三个步骤:
关键问题:指定图片的位置
首先应明白的是,在java中文件位置的分隔符”\”被替换为”/”,如要使用”\”分隔符,那么就应这样使用”\\”,即使用两个”\”符号。
其次图片的地址有两种指定的方法,一种是使用String字符串形式,一种是使用URL对象的形式。我们先看第一种
使用String字符串形式指定图片的地址:比如要指定在e盘下的名为1.jpg的图片,则形式为”e:/1.jpg”或”e:\\1.jpg”。
使用java.net.URL对象指定图片的地址:要使用URL类需要包含java.net包,在使用java.net.URL对象指定图片的地址时可以使用URL类中的构造函数URL(String str)来指定图片的路径。其中参数str表示指定的路径,要注意的是这里的路径因为是一个网络路径,因此在指定本地文件的路径时,应以”file:/”的形式开头,比如要该问e盘的1.jpg文件,则形式为tryURL url=new URL(“file:/e:/1.jpg”)catch(Exception e),要注意,因为URL构造函数会抛出一个异常,因此应把该语句放在try块中。也可以使用”file:/e:\\1.jpg”的形式。对于网络文件的位置应以”heep://”的形式开头。关于URL中的其他构造方法和其他内容,这里不做探讨,URL类是java.net网络编程的内容。
1、java.awt.Image类,注意Image第一个字母的大小写
首先应注意的是Image类是一个抽象类,也就是说不能直接实例化Image类的对象。因此要使用Image对象就必须从某个方法反回一个Image的对象,该方法反回的Image对象包括了图片所在的路径(位置)。在Applet类中可以直接使用getImage方法,但在应用程序(也就是Frame类中)中应使用java.awt.Toolkit类中的getImage()方法,因为在Component类中没有关于反回Image对象的方法。
2、java.awt.Toolkit类中的getImage方法:
Toolkit类是一个抽象类,因此不能直接实例化Toolkit类的对象,在Toolkit类中有两个版本的getImage方法,即getImage(URL url);和getImage(String str);其中参数url和str都是指定所要显示的图片所在的位置。
使用Toolkit类中的getImage方法的方式:Toolkit.getDefaultToolkit().getImage(“参数”);我们来解释一下原因,因为Toolkit是抽象类,因此要使用Toolkit中的getImage方法就需要靠其他方式。在Toolkit类中定义了一个静态方法其原型为:static Toolkit getDefaultToolkit()该方法反回一个Toolkit类型的对象,而且是静态对象,因此我们可以在程序中这样调用getImage方法:Toolkit.getDefaultToolkit().getImage(“参数”);
3、Graphics类中的drawImage方法
该方法有几个版本,常用的有如下两个:
boolean drawImage(Image img, int x, int y, ImageObserver ob); 表示图像在坐标(x,y)处绘制,当图像已完全加载时反回true
boolean drawImage(Image, img, int x, int y, int w, int h, ImabgeObserver ob);表示图像在坐标(x,y)处绘制,且把图像的宽度和高度缩放到w和h的大小。当图像已完全加载时反回true
以上方法的最后一个参数是ImageObserver(图像观察者)类型的对象,前面我们已讲过,每一个AWT组件都是图像观察者,因为Component实现了该接口,因此可以把组件自已作为该参数。 参考技术A 在paint方法中g.drawimage()啊
那你不处理面板应该不行,不管怎么样画上去的只要在面板下面肯定会被遮上去的,你要么把面板设置成透明要么就把图片中面板覆盖的那部分截出来作为面板的背景(面板也用paint中的g.drawImage),楼下的放JLabel的方法我觉得不行,要是放面板下面起不到作用,放上面那么你面板里面的控件就被Label给覆盖了 参考技术B 知道一个很简单的方法
往对话框上插入一个jLable
然后设置imageIcon为你自己想要的图像 就可以了
不明白 切换面板后图片仍然能显示出来 是什么意思 参考技术C http://blog.chinaunix.net/u/21684/showart_258857.html
这是例子用的是drawimage()
以上是关于安卓 为啥我旋转图片后图片缩小了,请高手帮帮忙啊的主要内容,如果未能解决你的问题,请参考以下文章
为啥在网站后台上传图片,总提示:您上传的文件太大,上传不成功,请在坐高手帮帮忙解决!小女子在此谢过!
javascript高手请进!关于就js控制网页图片放大缩小的问题
Java 中,对Oracle Clob中的图片Base64进行解码后用System.out.println() 输出为啥成乱码,求高手帮忙。