Android中图片旋转

Activity_main.xml文件配置

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <ImageView
        android:id="@+id/iv_src"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <ImageView
        android:id="@+id/iv_rotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

MainActivity.java代码

 1 package com.imagerotota.view;
 2
 3 import android.app.Activity;
 4 import android.graphics.Bitmap;
 5 import android.graphics.BitmapFactory;
 6 import android.graphics.Canvas;
 7 import android.graphics.Matrix;
 8 import android.graphics.Paint;
 9 import android.os.Bundle;
10 import android.os.SystemClock;
11 import android.widget.ImageView;
12
13 public class MainActivity extends Activity {
14
15     private ImageView ivSrc;
16     private ImageView ivRatate;
17
18     @Override
19     protected void onCreate(Bundle savedInstanceState) {
20         super.onCreate(savedInstanceState);
21         setContentView(R.layout.activity_main);
22         // 获取图片中相应的控件
23         ivSrc = (ImageView) findViewById(R.id.iv_src);
24         ivRatate = (ImageView) findViewById(R.id.iv_rotate);
25         // 将src.jpg图片转换为Bitmap
26         final Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.src);
27         // 在原图BitMap中不能对图片进行修改,只能复制图片中进行修改
28         // srcBitmap.setPixel(20, 30, Color.RED); //这种修改无效
29         // 将获取的图片显示在ivSrc控件中
30         ivSrc.setImageBitmap(srcBitmap);
31
32         // 新建一个线程,在线程中对图片进行旋转
33         new Thread() {
34             int degrees = 0;
35             public void run() {
36                 while(true){
37                     degrees += 5;
38                     //每次旋转图片都要重新复制原图,重新设置画笔等,否则旋转后就是在复制后的图片上进行修改
39                         // 复制原图片
40                         final Bitmap copybitmap = Bitmap.createBitmap(srcBitmap.getWidth(),
41                                 srcBitmap.getHeight(), srcBitmap.getConfig());
42                         // 用canvas创建一个货补,以copybitmap为模板
43                         final Canvas canvas = new Canvas(copybitmap);
44                         // 创建一个画笔
45                         final Paint paint = new Paint();
46                         // 创建一个矩阵对象
47                         final Matrix matrix = new Matrix();
48
49                      //对图片进行旋转
50                      matrix.setRotate(degrees, srcBitmap.getWidth()/2, srcBitmap.getHeight()/2);
51                     canvas.drawBitmap(srcBitmap,matrix, paint);
52                     //☆ 注意不能在子线程中直接更新activity页面ui
53                     runOnUiThread(new  Runnable() {
54                         public void run() {
55                             //将修改后的图片放入到相关ivRatate控件中
56                             ivRatate.setImageBitmap(copybitmap);
57                         }
58                     });
59                     //让线程睡眠一秒钟,后继续执行
60                     SystemClock.sleep(1000);
61                 }
62             }
63         }.start();
67     }
68 }

显示效果

时间: 2024-08-11 01:12:21

Android中图片旋转的相关文章

浅谈android中图片处理之图形变换特效Matrix(四)

今天,我们就来谈下android中图片的变形的特效,在上讲博客中我们谈到android中图片中的色彩特效来实现的.改变它的颜色主要通过ColorMatrix类来实现. 现在今天所讲的图片变形的特效主要就是通过Matrix类来实现,我们通过上篇博客知道,改变色彩特效,主要是通过ColorMatrxi矩阵的系数,以及每个像素点上所对应的颜色偏移量.而今天的图形变换与那个也是非常的类似.它是一个3*3矩阵,而颜色矩阵则是一个4*5的矩阵.在这个3*3矩阵中则表述出了每个像素点的XY坐标信息.然后通过修

网页中图片旋转的几种实现方式

网页中图片旋转一般有下面三种常见的实现方式: 一. ie 滤镜 IE的图形旋转滤镜,通过指定BasicImage滤镜的rotation值旋转元素,旋转方向为顺时针,旋转的中心点为元素的左上角.rotation可以有4个旋转值:0, 1, 2,和3分别表示将元素旋转0度.90度.180度.270度. 浏览器支持: IE5.5+ CSS代码: .rotate{ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); } JS

Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

Android中图片的处理(放大缩小,去色,转换格式,增加水印等) 原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.

Android中图片的三级缓存策略

一.简介 现在的Android应用程序中,不可避免的都会使用到图片,如果每次加载图片的时候都要从网络重新拉取,这样不但很耗费用户的流量,而且图片加载的也会很慢,用户体验很不好.所以一个应用的图片缓存策略是很重要的.通常情况下,Android应用程序中图片的缓存策略采用"内存-本地-网络"三级缓存策略,首先应用程序访问网络拉取图片,分别将加载的图片保存在本地SD卡中和内存中,当程序再一次需要加载图片的时候,先判断内存中是否有缓存,有则直接从内存中拉取,否则查看本地SD卡中是否有缓存,SD

Android 中图片压缩分析(上)

作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情况下,改变图片的存储体积,而后者则是降低图像尺寸,达到相同目的. 由于本文的篇幅问题,分为上下两篇发布. 二.Android 质量压缩逻辑 在Android中,对图片进行质量压缩,通常我们的实现方式如下所示: ByteArrayOutputStream outputStream = new Byte

Android中图片压缩方案详解

如感觉排版不舒服,可移步至此处查看 图片的展示可以说在我们任何一个应用中都避免不了,可是大量的图片就会出现很多的问题,比如加载大图片或者多图时的OOM问题,可以移步到Android高效加载大图.多图避免程序OOM.还有一个问题就是图片的上传下载问题,往往我们都喜欢图片既清楚又占的内存小,也就是尽可能少的耗费我们的流量,这就是我今天所要讲述的问题:图片的压缩方案的详解. 1.质量压缩法 设置bitmap options属性,降低图片的质量,像素不会减少 第一个参数为需要压缩的bitmap图片对象,

css 中图片旋转,倾斜,位移,平滑

在开发中,我们常常需要对图片有一些绚丽的效果,比如是图片旋转,平移,倾斜等.其实这些在css3中都已经存在,整理下作为demo,以后参考使用,也希望供大家交流学习.如果不足,多多指导. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>图片效果</title> <style type="text/css"> *{

简单地Android中图片的三级缓存机制

我们不能每次加载图片的时候都让用户从网络上下载,这样不仅浪费流量又会影响用户体验,所以Android中引入了图片的缓存这一操作机制. 原理: 首先根据图片的网络地址在网络上下载图片,将图片先缓存到内存缓存中,缓存到强引用中 也就是LruCache中.如果强引用中空间不足,就会将较早存储的图片对象驱逐到软引用(softReference)中存储,然后将图片缓存到文件(内部存储外部存储)中:读取图片的时候,先读取内存缓存,判断强引用中是否存在图片,如果强引用中存在,则直接读取,如果强引用中不存在,则

浅谈android中图片处理之色彩特效处理ColorMatrix(三)

在android开发中对图片处理很是频繁,其中对图片的颜色处理就是很常见的一种.我们经常看到一些类似美图秀秀,美颜相机的app,为什么那么黑的人拍出来是确实那么地白呢?长的那么那个(丑)的人,用美颜相机拍出来的看起来也有那么回事(拍出来就感觉挺漂亮).就像网上有个段子,有钱的都去韩国了,没钱都用ps了.韩国的就去整形,中国的就用ps.这些话虽然是调侃,但是从某种程度上来说像类似美图秀秀,美颜相机app确实挺受大家欢迎.但是你是否曾想过它这种效果,它是怎么实现的吗?你是否曾想过它的原理是什么吗?所