ImageScale

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, 1);
                    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(1, -1);
                   matrix.postTranslate(0, 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(90, bp.getWidth()/2, bp.getHeight()/2);
                   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(100, 100);
                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;
    }

}

执行效果图:

时间: 2024-11-05 12:34:57

ImageScale的相关文章

百度富文本编辑器ueditor使用总结

最近做的项目用到了ueditor这个东东,但是他的一些配置文档对初次使用者来说很难以理解,故作此总结 1.ueditor 官方地址:http://ueditor.baidu.com/website/index.html 开发文档地址:http://ueditor.baidu.com/website/document.html 下载地址:http://ueditor.baidu.com/website/download.html (这里可选开发版,或MINI版) 2. 从官网上下载完整源码包,解压

android高仿微信UI点击头像显示大图片效果

转自:http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html 用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另一个activity,然后显示加载的效果,即progressbar 2.显示图片的之前先弹出自定义dialog,然后模拟加载一段时间后,显示整张大图片,要全屏显示,

简单五子棋,没有电脑AI

刚学了C#委托,做了个五子棋练习,把前台绘制和后台逻辑分开,前台绘制方法用委托传给后台逻辑. 界面好简单... 先看类图 控制类控制整个游戏的逻辑,包括调用棋盘类的属性初始化棋盘.初始化两个棋手.轮流落子.棋盘里有一个二维数组保存整个棋盘的落子情况,棋手里也有一个二维数组保存自己的落子情况.方向类是为了方便判断输赢的. 下面是代码:注释很详细就不说明了: 主要控制类: 1 using System; 2 using System.Collections.Generic; 3 using Syst

java图片缩放

package com.rubekid.springmvc.utils; import java.awt.AlphaComposite; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.image.AffineTransformOp; import java.awt.image.BufferedImage; import java.io.File; import java.io.F

Camera图片特效处理综述(Bitmap的Pixels处理、Canvas/paint的drawBitmap处理、旋转图片、裁截图片、播放幻灯片浏览图片<线程固定时间显示一张>)

一种是直接对Bitmap的像素进行操作,如:叠加.边框.怀旧.(高斯)模糊.锐化(拉普拉斯变换). Bitmap.getPixels(srcPixels, 0, width, 0, 0, width, height); newR = (int) (pixR * alpha + layR * (1 - alpha));    newR = Math.min(255, Math.max(0, newR));    ...    srcPixels[pos] = Color.argb(newA, ne

图像放大快速算法

图像放大快速算法实现的原理主要有以下两点: 1.横向缩放与纵向缩放分开,而先后顺序取决于缩放前后的图像比例: 若SrcHeight/DstWidth>SrcWidth/DstWidth,则先纵向缩放,否则横向缩放. 2.利用整数运算代替浮点运算,由于是分步缩放,以横向缩放为例,利用二次线性插值公式,再变形一下如下: f(i,j+v) = (1-v)f(i,j) +vf(i,j+1); 其中i为第i行,j为第j列,v表示求得放大后坐标的小数部分. 这里最重要的并没有直接用小数运算,而是通过将小数区

ALAssetsLibrary使用

在iOS中,我们调用摄像头和选择相册中的资源,我们可以使用:UIImagePickerController类来完成. 当然,我们也可以不使用UI的形式来访问iOS设备的相册资源. 那就是使用:ALAssetsLibrary 一.ALAssetsLibrary是什么 可以说,是一个桥梁把.连接了我们应用程序和相册之间的访问. ALAssetsLibrary提供了我们对iOS设备中的相片.视频的访问. ALAssetsLibrary被封装在 框架中.所以,我们在使用时,需要引入该框架. 需添加Ass

Android 相册图片选取+自定义裁剪方式(非系统裁剪)

不多说,直接上代码(裁剪的代码摘自网络.)(项目可运行) 主要是系统自身的剪切方式在有些机型上会程序崩溃的问题. 1 package com.jichun.activity; 2 3 import java.io.FileNotFoundException; 4 5 import com.jichun.view.CropCanvas; 6 7 import android.app.Activity; 8 import android.content.ContentResolver; 9 impo

自定义带描述的ImageView

在values/attrs.xml文件中创建自定义的属性.设置了自定义的属性. <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="texttitle" format="string"/> <attr name="texttitlesize" format="dimension&qu