图片的放大缩小

布局文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context=".MainActivity" >
11
12     <LinearLayout
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content" >
15
16         <Button
17             android:layout_width="0dp"
18             android:layout_height="wrap_content"
19             android:layout_weight="1"
20             android:onClick="zoomIn"
21             android:text="放大" />
22
23         <Button
24             android:layout_width="0dp"
25             android:layout_height="wrap_content"
26             android:layout_weight="1"
27             android:onClick="zoomOut"
28             android:text="缩小" />
29
30         <Button
31             android:layout_width="0dp"
32             android:layout_height="wrap_content"
33             android:layout_weight="1"
34             android:onClick="rotate"
35             android:text="旋转" />
36
37         <Button
38             android:layout_width="0dp"
39             android:layout_height="wrap_content"
40             android:layout_weight="1"
41             android:onClick="inverse"
42             android:text="镜像" />
43     </LinearLayout>
44
45     <ImageView
46         android:id="@+id/imageView"
47         android:layout_width="wrap_content"
48         android:layout_height="wrap_content"
49         android:src="@drawable/qq" />
50
51 </LinearLayout>

代码

 1 public class MainActivity extends Activity {
 2
 3     private ImageView imageView;
 4     private Bitmap bitmap;
 5
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_main);
10         imageView = (ImageView) findViewById(R.id.imageView);
11         bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qq);
12     }
13
14     public void zoomIn(View v) {
15         Bitmap newBitmap = Bitmap.createBitmap(bitmap.getWidth() * 2, bitmap.getHeight() * 2, bitmap.getConfig());    // 创建新的Bitmap, 指定大小
16         Canvas canvas = new Canvas(newBitmap);        // 创建画布
17         Matrix matrix = new Matrix();                // 创建模型
18         matrix.postScale(2, 2);                        // 设置缩放比例, x轴和y轴都是2倍大小
19         canvas.drawBitmap(bitmap, matrix, null);    // 参照matrix模型, 在画布上按照bitmap画
20
21         imageView.setImageBitmap(newBitmap);        // 把新图片设置到ImageView中
22         bitmap = newBitmap;                            // 记住新图片, 下次从这个图片操作
23     }
24
25     public void zoomOut(View v) {
26         Bitmap newBitmap = Bitmap.createBitmap(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getConfig());
27         Canvas canvas = new Canvas(newBitmap);
28         Matrix matrix = new Matrix();
29         matrix.postScale(0.5f, 0.5f);
30         canvas.drawBitmap(bitmap, matrix, null);
31
32         imageView.setImageBitmap(newBitmap);
33         bitmap = newBitmap;
34     }
35
36     public void rotate(View v) {
37         Bitmap newBitmap = Bitmap.createBitmap(bitmap.getHeight(), bitmap.getWidth(), bitmap.getConfig());
38         Canvas canvas = new Canvas(newBitmap);
39         Matrix matrix = new Matrix();
40         matrix.postRotate(90, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
41         canvas.drawBitmap(bitmap, matrix, null);
42
43         imageView.setImageBitmap(newBitmap);
44         bitmap = newBitmap;
45     }
46
47     public void inverse(View v) {
48         Bitmap newBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight() , bitmap.getConfig());
49         Canvas canvas = new Canvas(newBitmap);
50         Matrix matrix = new Matrix();
51         matrix.postScale(-1, 1);                        // -1 代表x轴做镜像(镜像之后图片会移动到左边)
52         matrix.postTranslate(bitmap.getWidth(), 0);        // 向右移动
53         canvas.drawBitmap(bitmap, matrix, null);
54
55         imageView.setImageBitmap(newBitmap);
56         bitmap = newBitmap;
57     }
58
59 }
时间: 2024-08-10 15:06:55

图片的放大缩小的相关文章

UIButon 控件的尺寸放大缩小(也可以理解为图片的放大缩小,思路是一样的)-学习笔记

图片的放大缩小功能的简单实现(以一个简单的猜图项目中的放大缩小为例) 思路: 1.创建一个UIButton * guessimage  控件,设定好位置,再创建一个button bigImage控件测试一下 放大图片的方法 goToBig,同样放好位置: 2.给 guessimage 设置边距,尺寸大小,同样 bigImage 也进行设置等等: 3.给 bigImage 添加点击 放大图片的方法:goToBig, 在goToBig里面 定义 4个 座标的值,也就是 CGFloat guessim

Android 本地/网路下载图片实现放大缩小

 Android 本地加载/网路下载图片实现放大缩小拖拉效果,自定义控件. package com.example.ImageViewCustom; import android.app.Activity; import android.os.Bundle; import com.example.ImageViewCustom.CustomControl.MImageView; public class MyActivity extends Activity { MImageView mImag

Java界面程序实现图片的放大缩小

Java界面程序实现图片的放大缩小.这个程序简单地实现了图片的打开.保存.放大一倍.缩小一倍和固定缩放尺寸,但是并没有过多的涵盖对图片的细节处理,只是简单地实现了图片大小的放缩. 思维导图如下: 效果图如下: 代码如下: package picture; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import javax.swing.*; import java.io.*; i

Android多点触控技术,实现对图片的放大缩小平移,惯性滑动等功能

首先推荐一下鸿洋大大的打造个性的图片预览与多点触控视频教程,这套教程教我们一步一步实现了多点触控实现对图片的平移和缩放的功能,这篇文章我将在鸿洋大大的基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例 实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释 public class ZoomImageView extends ImageView implements

ViewPager图片预览之图片的放大缩小,移动,切换(第三课)连载

第三课(第三步):支持以手指触控的任意点为中心开始缩放 关键部分是在缩放的时候不断进行边界检测,防止放大后缩小后出现白边: /** * 在缩放的时候进行边界控制范围位置控制 */ private void checkBorderAndCenterWhenScale() { // TODO Auto-generated method stub RectF rect = getMatrixRectF(); float deltaX = 0; float deltaY = 0; float width

Android 图片的放大缩小拖拉

package com.example.ImageView; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.*; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask;

图片不能放大缩小的问题

今天在写一个通过js控制图片的宽度和高度的demo,出现了一个与我逾期不一样的问题一直以来,由于我们在页面中显示的图片一般不和给的图片尺寸相吻合,所以我们在页面中一般要对img标签定义一个宽高,如下面代码:html代码:      <div id = "main">             <img src="dog.jpg" id="dog"/>             <button id="bigge

(纯代码)图片移动放大缩小:

#import "YYViewController.h" 10 11 //私有扩展 12 @interface YYViewController () 13 14 @property(nonatomic,weak)IBOutlet UIButton *headImageView; 15 @end 16 17 @implementation YYViewController 18 19 //枚举类型,从1开始 20 typedef enum 21 { 22 ktopbtntag=1, 2

ViewPager图片预览之图片的放大缩小,移动,切换(第四课)结束了

终极版 package com.zhy.view; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Matrix; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import andro