android 怎么裁剪drawable

android 怎么裁剪drawable,第1张

可使用ScaleType来指定drawable的缩放方式,来实现裁剪效果。
ImageView的Scaletype决定了在View上显示时的样子,如进行何种比例的缩放,及显示的整体还是部分,等等。
设置的方式包括:
1 在layout xml中定义android:scaleType="CENTER"
2 或在代码中调用imageViewsetScaleType(ImageViewScaleTypeCENTER);
Scaletype的取值说明:
1 SetScaleType(ImageViewScaleTypeCENTER);
按的原来size居中显示,当长/宽超过View的长/宽,则截取的居中部分显示
2 SetScaleType(ImageViewScaleTypeCENTER_CROP);
按比例扩大的size居中显示,使得长(宽)等于或大于View的长(宽)
3 setScaleType(ImageViewScaleTypeCENTER_INSIDE);
将的内容完整居中显示,通过按比例缩小或原来的size使得长/宽等于或小于View的长/宽
4 setScaleType(ImageViewScaleTypeFIT_CENTER);
把按比例扩大/缩小到View的宽度,居中显示
5 FIT_START, FIT_END在缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。
在此就不给出示例了。
6 FIT_XY
不按比例缩放,目标是把塞满整个View。

1打开WorldPainter,点击“文件”菜单,然后选择“新建地图”。
2在“新建地图”对话框中,输入你想要的地图大小,然后点击“确定”按钮。
3点击“编辑”菜单,然后选择“裁剪”。
4在“裁剪”对话框中,输入你想要的地图大小,然后点击“裁剪”按钮。
5你的地图大小就被裁剪成你想要的大小了。

所有方法我可不知道,介绍个最常用的:通过Graphics对象来进行绘图,要获得此对象可通过方法getGraphics()来实现,举个例子:Graphics g=getGraphics();gdrawImage(image,0,0,this);drawImage()函数是Graphics对象的一个方法,意思就是把image画到本对象的0,0位置。此函数有很多重载的方法: drawImage(Image,int,int,ImageObserver);不再说了。 drawImage(Image,int,int,Color,ImageObserver);需要说的是Color是指的的背景色,如果有透明的区域,就用这个背景色。其余的参数含义刚说了,就不重复了。 drawImage(Image,int x,int y,int width,int height,ImageObserver);把image画在ImageObserver的x,y位置,宽为width,高为height。如果的大小与指定的宽高不一致,就会进行缩放,总是把整张图全画进去。 drawImage(Image,int,int,int,int,Color,ImageObserver);意思跟刚刚的一样,Color还是背景色。 drawImage(Image,int x1,int y1,int width1,int height1,int x2,int y2,int width2,int height2,ImageObserver);先将裁剪,从x2,y2开始裁,留下的图像宽为width2,高为height2,再把这个裁好的图画到ImageObserver的x1,y1上,大小为width1,height1,如果大小不一致还是用缩放的办法。 drawImage(Image,int,int,int,int,int,int,int,int,Color,ImageObserver);跟上面的一样,Color是背景色。 需要注意的是getGraphics()方法是JComponent对象的方法,所有的Swing对象都继承JComponent对象,所以象JFrame等类都有这个方法,也就是说,此方法不能在JComponent对象以外的地方调用,显然的不能写在main方法里。drawImage()函数里的Image对象可以这样用:Image image=ToolkitgetDefaultToolKit()getImage("myjpg");这样就获得了一张。drawImage()函数里的ImageObserver对象其实就是JComponent对象,因为ImageObserver是个接口,JComponent类实现了它,所以所有的JComponent对象就是ImageObserver对象,就是JFrame,JPanel等对象。当然还有很多方法,刚才说了缩放的裁剪,其实图像的过滤还有很多内容,要说起来的话恐怕要上万字了,我懒得说那么多了这个方法挺好用的,一般的软件就用这个就没问题了,除非你说你想做个photoshop那我就爱莫能助了。再举个例子吧,显示一张://Displayjava//-------------------------------import javaxswingJFrame;import javaawtToolkit; public class Display extends JFrame{ private Image image; public JFrame(){super("MyDisplay");image=ToolkitgetDefaultToolkit()getImage("myjpg");//换成你自己的thissetSize(800,600);} public void paint(Graphics g){gdrawImage(image,0,0,800,600,this);//画,这里的paint方法系统自动调用,并且还传递进来了Graphics对象,省的再自己用getGraphics方法了。} public static void main(String[] args){new Display()setVisible(true);} }就说这么多吧,要真讲起来实在太麻烦了,介绍本书给你:java2图形设计卷I:AWT,java2图形设计卷II:SWING,这两本书够你看的了,虽然内容老旧,10年前的书,但是讲的全是基础,而且里面的东西现在还在用。你要是E文好就去SUN官网看技术文档或者jdk的帮助文档。

File srcFile = new File(srcImgPath);  
   Image srcImg = ImageIOread(srcFile);  
   BufferedImage buffImg = null;  
   buffImg = new BufferedImage(width, height, BufferedImageTYPE_INT_RGB);  
   buffImggetGraphics()drawImage(  
           srcImggetScaledInstance(width, height, ImageSCALE_SMOOTH), 0,  
           0, null);  
   ImageIOwrite(buffImg, "JPEG", new File(distImgPath));  

GraphicsMagick+im4java可以处理,GraphicsMagick不用把整张读取到内存中,比你用原生的效率高多了,你可以搜索看看,以前我们就是用GraphicsMagick处理裁剪的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13349244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存