018_01图片特效

  1 package com.example.day18_01picturewizad;
  2
  3 import android.app.Activity;
  4 import android.graphics.Bitmap;
  5 import android.graphics.Bitmap.Config;
  6 import android.graphics.BitmapFactory;
  7 import android.graphics.Canvas;
  8 import android.graphics.Matrix;
  9 import android.graphics.Paint;
 10 import android.os.Bundle;
 11 import android.view.View;
 12 import android.widget.ImageView;
 13
 14 public class MainActivity extends Activity {
 15
 16     private ImageView iv_picture;
 17     private float degree;
 18
 19     @Override
 20     protected void onCreate(Bundle savedInstanceState) {
 21         super.onCreate(savedInstanceState);
 22         setContentView(R.layout.activity_main);
 23         iv_picture = (ImageView) findViewById(R.id.iv_picture);
 24     }
 25
 26     /**
 27      * 将原始图片放大或缩小
 28      * @param v
 29      */
 30     public void scale (View v){
 31
 32         Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
 33         Bitmap blank_btimap =Bitmap.createBitmap(bitmap.getWidth()*2, bitmap.getHeight()*2, Config.ARGB_8888);
 34         Canvas canvas = new Canvas(blank_btimap);
 35         Paint paint = new Paint();
 36
 37         //canvas.drawBitmap(bitmap, 0, 0, paint);
 38         //现在我们需要将原图 通过放大或者缩小变换,重新绘制到blank_bitmap上
 39
 40
 41         //matrix 矩阵
 42           Matrix matrix  = new Matrix();
 43
 44           float[] values = {1, 0, 0,     //  表示向量x = 1x + 0y + 0z
 45                             0, 1, 0,     //  表示向量y = 0x + 1y + 0z
 46                             0, 0, 1 };   //  表示向量z = 0x + 0y + 1z
 47
 48           matrix.setValues(values);
 49           canvas.drawBitmap(bitmap, matrix, paint);
 50
 51              iv_picture.setImageBitmap(blank_btimap);
 52
 53     }
 54
 55
 56     public void horizontal_reverse(View v){
 57
 58         Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
 59         Bitmap blank_btimap =Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
 60
 61         Canvas canvas = new Canvas(blank_btimap);//会画到blankbitmap上
 62         Paint paint = new Paint();
 63         //canvas.drawBitmap(bitmap, 0, 0, paint);
 64         //现在我们需要将原图 通过放大或者缩小变换,重新绘制到blank_bitmap上
 65          //matrix 矩阵
 66           Matrix matrix  = new Matrix();
 67
 68           float[] values = {-1, 0, 0,     //  表示向量x = 1x + 0y + 0z
 69                              0, 1, 0,     //  表示向量y = 0x + 1y + 0z
 70                              0, 0, 1};   //  表示向量z = 0x + 0y + 1z
 71
 72           matrix.setValues(values);
 73           matrix.postTranslate(bitmap.getWidth(), 0);
 74
 75           canvas.drawBitmap(bitmap, matrix, paint);
 76              iv_picture.setImageBitmap(blank_btimap);
 77     }
 78
 79
 80     public void vertical_reverse(View v){
 81            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
 82             Bitmap blank_btimap =Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
 83
 84             Canvas canvas = new Canvas(blank_btimap);//会画到blankbitmap上
 85             Paint paint = new Paint();
 86             //canvas.drawBitmap(bitmap, 0, 0, paint);
 87             //现在我们需要将原图 通过放大或者缩小变换,重新绘制到blank_bitmap上
 88              //matrix 矩阵
 89               Matrix matrix  = new Matrix();
 90
 91               float[] values = { 1, 0, 0,     //  表示向量x = 1x + 0y + 0z
 92                                  0, -1, 0,     //  表示向量y = 0x + 1y + 0z
 93                                  0, 0, 1};   //  表示向量z = 0x + 0y + 1z
 94
 95               matrix.setValues(values);
 96               matrix.postTranslate(0, bitmap.getHeight());
 97
 98               canvas.drawBitmap(bitmap, matrix, paint);
 99                  iv_picture.setImageBitmap(blank_btimap);
100     }
101
102
103     public void rotate(View v){
104
105             Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
106             Bitmap blank_btimap =Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);
107
108             Canvas canvas = new Canvas(blank_btimap);//会画到blankbitmap上
109             Paint paint = new Paint();
110             //canvas.drawBitmap(bitmap, 0, 0, paint);
111             //现在我们需要将原图 通过放大或者缩小变换,重新绘制到blank_bitmap上
112              //matrix 矩阵
113               Matrix matrix  = new Matrix();
114
115               float[] values = { 1, 0, 0,     //  表示向量x = 1x + 0y + 0z
116                                  0, 1, 0,     //  表示向量y = 0x + 1y + 0z
117                                  0, 0, 1};   //  表示向量z = 0x + 0y + 1z
118               matrix.setValues(values);
119
120               degree = degree+20;
121               matrix.setRotate(degree, bitmap.getWidth()/2, bitmap.getHeight()/2);
122
123               canvas.drawBitmap(bitmap, matrix, paint);
124                  iv_picture.setImageBitmap(blank_btimap);
125     }
126
127
128     public void transform(View v){
129          Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
130          Bitmap blank_btimap =Bitmap.createBitmap(bitmap.getWidth()+10, bitmap.getHeight()+10, Config.ARGB_8888);
131
132          Canvas canvas = new Canvas(blank_btimap);//会画到blankbitmap上
133          Paint paint = new Paint();
134         //canvas.drawBitmap(bitmap, 0, 0, paint);
135         //现在我们需要将原图 通过放大或者缩小变换,重新绘制到blank_bitmap上
136          //matrix 矩阵
137           Matrix matrix  = new Matrix();
138           float[] values = { 1, 0, 0,     //  表示向量x = 1x + 0y + 0z
139                              0, 1, 0,     //  表示向量y = 0x + 1y + 0z
140                              0, 0, 1};   //  表示向量z = 0x + 0y + 1z
141           matrix.setValues(values);
142           matrix.postTranslate(10, 10);
143
144           canvas.drawBitmap(bitmap, matrix, paint);
145              iv_picture.setImageBitmap(blank_btimap);
146     }
147 }
时间: 2024-10-11 21:23:48

018_01图片特效的相关文章

CSS基础学习十九:CSS布局之图文混排,图像签名,多图拼接和图片特效

学习了CSS布局的定位和浮动,我们可以简单地做出很多排版和内容拼接.今天就来做几个简单的实例展示现在 流行的DIV+CSS布局的方便好用之处.顺便也说一下CSS3新增的样式属性box-shadow和属性transform. 一图文混排 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

【转】一、android图片特效处理之模糊效果

这篇将讲到图片特效处理的模糊效果.跟前面一样是对像素点进行处理,算法是通用的,但耗时会更长,至于为什么,看了下面的代码你就会明白. 算法: 一.简单算法:将像素点周围八个点包括自身一共九个点的RGB值分别相加后平均,作为当前像素点的RGB值,即可实现效果. 举例: ABC DEF GHI 假如当前点是E,那么会有: E.r = (A.r + B.r + C.r + D.r + E.r + F.r + G.r + H.r + I.r) / 9 // r表示的是E像素点RGB值的R值 E像素点的GB

jQuery图片特效脚本prettyPhoto简介

prettyPhoto是一款基于jquery的轻量级的lightbox图片特效脚本,它不仅支持图片,还同时支持视频.flash. YouTube.iframe和ajax.而且prettyPhoto配置和使用都十分简单,扩展性也不错,你可以最大限度地自定义 prettyPhoto.prettyPhoto兼容大部分主流的浏览器,有些Wordpress图片插件就是基于此脚本制作的. 比如:Wordpress插件:Royal PrettyPhoto 建议英文好的朋友直接去官网上了解这个插件的用法,如果你

android图片特效处理之模糊效果

这篇将讲到图片特效处理的模糊效果.跟前面一样是对像素点进行处理,算法是通用的,但耗时会更长,至于为什么,看了下面的代码你就会明白. 算法: 一.简单算法:将像素点周围八个点包括自身一共九个点的RGB值分别相加后平均,作为当前像素点的RGB值,即可实现效果. 举例: ABC DEF GHI 假如当前点是E,那么会有: E.r = (A.r + B.r + C.r + D.r + E.r + F.r + G.r + H.r + I.r) /9 // r表示的是E像素点RGB值的R值 E.r = (A

【转】五、android图片特效处理之光照效果

这篇将讲到图片特效处理的光照效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:图片上面的像素点按照给定圆心,按照圆半径的变化,像素点的RGB值分别加上相应的值作为当前点的RGB值. 例: ABCDE FGHIJ KLMNO 如果指定H点为光照效果的中心,半径为两个像素点,那么G点RGB值分别加上的值会比F点的要大,因为RGB值越大,就越接近白色,所以G点看起来比F点要白,也就是距光照中心越近,看效果图: 原图: 处理后: 代码: http://wenku.baidu.com/link

【转】三、android图片特效处理之锐化效果

这篇将讲到图片特效处理的锐化效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理: 一.简单算法:分别获取当前像素点和八个周围像素点的RGB值,先求出当前像素点的RGB值与八个像素点RGB值的和的平均数,再乘以相应的系数,然后在与当前像素点之和. 例: ABC DEF GHI 对E点进行锐化: float delta = 0.3; E.r = (E.r - (A.r + B.r + C.r + D.r + F.r + G.r + H.r + I.r) / 8) * delta + E.r

【转】六、android图片特效处理之图片叠加

这篇将讲到图片特效处理的图片叠加效果.跟前面一样是对像素点进行处理,可参照前面的android图像处理系列之七--图片涂鸦,水印-图片叠加和android图像处理系列之六--给图片添加边框(下)-图片叠加两篇文章,此篇所讲的与之前有一点区别.叠加原理是两张图片的像素点按透明度叠加,不会进行颜色过滤.叠加图片可以是JPG格式,跟前在一样,最好是放大assets目录.下面看效果图: += 代码: /** * 图片效果叠加 * @param bmp 限制了尺寸大小的Bitmap * @return *

【转】七、android图片特效处理之光晕效果

这篇将讲到图片特效处理的图片光晕效果.跟前面一样是对像素点进行处理,本篇实现的思路可参见android图像处理系列之九--图片特效处理之二-模糊效果和android图像处理系列之十三--图片特效处理之六-光照效果.实现的效果是圆圈之内图片像素点不变,圆圈之外的点做模糊处理.所以用到了模糊效果和光照效果里面的是否是在圆圈内的算法,可以说是上面提到的两篇的效果的组合. 下面看效果图: 原图: 效果图: 光晕效果看得不是很明显,模糊强度不够,但是还能明显看到图片中有一个圆圈,圈内区域要比圈外区域看得清

【转】二、android图片特效处理之怀旧效果

图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,JAVA都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式的意思是说将每个像素点的RGB值先分离出来,然后再按照上面的三个算式分别重新计算出RGB值然后做为当前点的RGB值. 下面看效果图片: 原图片: 处理后: 代码: /** * 怀旧效果(相对之前做了优化快一倍) * @param bmp * @return */ private Bitmap old