package com.example.imagescale;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity {
private ImageView iv1,iv2;
private Button bt,bt2,bt3,bt4;
private Bitmap bp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv1=(ImageView)this.findViewById(R.id.imageView1);
iv2=(ImageView)this.findViewById(R.id.imageView2);
bt=(Button)this.findViewById(R.id.button1);
bt2=(Button)this.findViewById(R.id.button2);
bt3=(Button)this.findViewById(R.id.button3);
bt4=(Button)this.findViewById(R.id.button4);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bp = BitmapFactory.decodeResource(getResources(), R.drawable.xh);
//iv1.setImageBitmap(bp);
//对照图片
//以bp在高、宽决定Canvas画布的大小
Bitmap bp2 = Bitmap.createBitmap(bp.getWidth(), bp.getHeight(), bp.getConfig());//
Canvas canvas = new Canvas(bp2);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
matrix.setScale(0.5f, );
canvas.drawBitmap(bp, matrix, paint);
iv2.setImageBitmap(bp2);
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bp = BitmapFactory.decodeResource(getResources(), R.drawable.xh);
//iv1.setImageBitmap(bp);
//对照图片
//以bp在高、宽决定Canvas画布的大小
Bitmap bp2 = Bitmap.createBitmap(bp.getWidth(), bp.getHeight(), bp.getConfig());//
Canvas canvas = new Canvas(bp2);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
matrix.setScale(, -);
matrix.postTranslate(, bp.getHeight());
canvas.drawBitmap(bp, matrix, paint);
iv2.setImageBitmap(bp2);
}
});
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bp = BitmapFactory.decodeResource(getResources(), R.drawable.xh);
//iv1.setImageBitmap(bp);
//对照图片
//以bp在高、宽决定Canvas画布的大小
Bitmap bp2 = Bitmap.createBitmap(bp.getWidth(), bp.getHeight(), bp.getConfig());//
Canvas canvas = new Canvas(bp2);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
matrix.setRotate(, bp.getWidth()/, bp.getHeight()/);
canvas.drawBitmap(bp, matrix, paint);
iv2.setImageBitmap(bp2);
}
});
bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
bp = BitmapFactory.decodeResource(getResources(), R.drawable.xh);
//iv1.setImageBitmap(bp);
//对照图片
//以bp在高、宽决定Canvas画布的大小
Bitmap bp2 = Bitmap.createBitmap(bp.getWidth(), bp.getHeight(), bp.getConfig());//
Canvas canvas = new Canvas(bp2);
Paint paint = new Paint();
paint.setColor(Color.BLACK);
Matrix matrix = new Matrix();
matrix.setTranslate(, );
canvas.drawBitmap(bp, matrix, paint);
iv2.setImageBitmap(bp2);
}
});
//原始图片
//bp = BitmapFactory.decodeResource(getResources(), R.drawable.xh);
//iv1.setImageBitmap(bp);
//对照图片
//以bp在高、宽决定Canvas画布的大小
//Bitmap bp2 = Bitmap.createBitmap(bp.getWidth(), bp.getHeight(), bp.getConfig());//
//Canvas canvas = new Canvas(bp2);
//Paint paint = new Paint();
//paint.setColor(Color.BLACK);
//Matrix matrix = new Matrix();
//1.缩放
//方法一:使用矩阵
/*matrix.setValues(new float[]{
0.5f,0,0,
0,1,0,
0,0,1
});*/
//方法二:
//matrix.setScale(0.5f, 1);
//2.旋转
//以图片左上角为中心旋转
//matrix.setRotate(15);
//以图片中心旋转
//matrix.setRotate(90, bp.getWidth()/2, bp.getHeight()/2);
//消除锯齿
//paint.setAntiAlias(true);
//3.平移
//matrix.setTranslate(50, 50);
//4.镜子效果
//matrix.setScale(-1, 1);
//matrix.postTranslate(bp.getWidth(), 0);
//5.倒影效果
//matrix.setScale(1, -1);
//matrix.postTranslate(0, bp.getHeight()); //canvas.drawBitmap(bp, matrix, paint);
//iv2.setImageBitmap(bp2); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

执行效果图:

Android之图片应用的更多相关文章

  1. Android压缩图片到100K以下并保持不失真的高效方法

    前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右.这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间. 在开发Android企 ...

  2. 仿优酷Android客户端图片左右滑动(自动滑动)

    最终效果: 页面布局main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...

  3. 用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片

    用ticons指令结合ImageMagickDisplay工具批量生成Android适应图片 ticons的用法可以百度 这里记录下具体的编译方法 在安装了ticons和ImageMagickDisp ...

  4. Android 实现图片画画板

    本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...

  5. 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析

    原文:关于Android中图片大小.内存占用与drawable文件夹关系的研究与分析 相关: Android drawable微技巧,你所不知道的drawable的那些细节 经常会有朋友问我这个问题: ...

  6. android 拉伸图片

    Android拉伸图片用的是9.png格式的图片,这种图片可以指定图片的那一部分拉伸,那一部分显示内容,美工给的小图片也能有很好的显示效果. 原背景图片 可以看到原背景图片很小,即使在再长的文字,背景 ...

  7. Android大图片裁剪终极解决方案(上:原理分析)

    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)  http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...

  8. 高仿优酷Android客户端图片左右滑动(自动切换)

    本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和门户网站都有类似的实现: 具体思路: 1. 工程中需要添加android-support-v4.jar,才能 ...

  9. Android圆形图片自定义控件

    Android圆形图片控件效果图如下: 代码如下: RoundImageView.java package com.dxd.roundimageview; import android.content ...

  10. 利用WCF与Android实现图片上传并传参

    利用WCF与Android实现图片上传并传参 最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想 ...

随机推荐

  1. IoC/DI

    From:http://jinnianshilongnian.iteye.com/blog/1471944 我对IoC/DI的理解 博客分类: spring杂谈 IoCDI  IoC IoC: Inv ...

  2. heritrix

    Heritrix3.0教程    http://blog.csdn.net/neo_liukun/article/category/1118819

  3. Hadoop on Mac with IntelliJ IDEA - 2 解决URI错误导致Permission denied

    本文讲述在IntelliJ IDEA中使用FileSystem.copyFromLocalFile操作Hadoop时因URI格式有误导致Permission denied的解决过程. 环境:Mac O ...

  4. 关于ant的使用和入门知识

    入门技术 在学习struts+spring+hibernate,尤其是Appfuse的过程中大量涉及到ant的使用,因此我觉得有必要对ant做个比较深入的学习,以下是在学习过程中搜集的材料.比较详细, ...

  5. Intel大坑之中的一个:丢失的SSE2 128bit/64bit 位移指令,马航MH370??

    缘由 近期在写一些字符串函数的优化,兴趣使然.但是写的过程中,想要实现 SSE2 128 bit / 64 bit 的按 bit 逻辑位移.遇到了一个大坑,且听我娓娓道来. 我并不想用什么马航370来 ...

  6. Codeforces Gym 100286F Problem F. Fibonacci System 数位DP

    Problem F. Fibonacci SystemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...

  7. 安卓高手之路之 ClassLoader

    我不喜欢那些泛泛而谈的去讲那些形而上学的道理,更不喜欢记那些既定的东西.靠记忆去弥补思考的人,容易陷入人云亦云的境地,最后必定被记忆所围困,而最终消亡的是创造力.希望这个高手之路系列能够记录我学习安卓 ...

  8. [ES6] 19. for ... of

    In ES5, we have for ... in: var phones = ["iPhone", "Nexus", "Nokia"]; ...

  9. 将Uploads文件夹移到其它地方

    1.在创建目录 cd /mnt/xvdb mkdir qingtong 2.复制目录和权限 cp -rp /Uploads/ ./ -r 包括目录 p权限 3.创建软链接 ln -s /mnt/xvd ...

  10. 高级进程间通信之基于STREAMS的管道

    基于STREAMS的管道(简称STREAMS管道,STREAMS pipe)是一个双向(全双工)管道.单个STREAMS管道就能向父.子进程提供双向的数据流. 将http://www.cnblogs. ...