• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像

安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了安卓密室逃脱1第10关,如何破解安卓图形密码,安卓图形解锁破解,安卓手机图形锁破解,安卓图形密码破解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像


安卓第十五天笔记-图形图像一些简单处理

多媒体编程简介--图形的一般处理

1.计算机中图形计算的大小

一般白色就是0,黑色就是1

单色位图:

8位表示一个字节,
大小:长*宽/8,表示大小,还有一些文件信息如创建时间,什么工具创建之类的

24位位图

一个像素表示24位
大小:长*宽*24/8    

256色

1个像素可以表示256种颜色 一个字节它的长度刚好是256 ,那么一个像素点就是一个字节
大小:长*宽

安卓中默认使用32位的

  • 位图的缺陷
    • 放大到一定的比例会出会出现失真与锯齿形状
    • 占用很大的存储空间

2.加载一个图片文件到存中

将一个图片放在SD卡上,使用BitmapFactory.decodeFile解析得Bitmap设置ImageView显示

   ImageView iv = (ImageView) findViewById(R.id.iv);
    //加载图片
    //Bitmap bitmap =BitmapFactory.decodeFile("/mnt/sdcard/img7.jpg");

    Bitmap bitmap =BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/img7.jpg");
    //设置图片
    iv.setImageBitmap(bitmap);

 

以上的图片可以正常加载

异常现象---加载 的图片过大,如2560*1520之类的,加载 时就会报OutMemoryError内存溢出

   java.lang.OutOfMemoryError

 

3.设置图片的缩放

  • 获取屏幕的大小宽和高

    //1. 获取到屏幕分辨率
    WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
    
    Display display = manager.getDefaultDisplay();
    
    Point outSize = new Point();
    display.getSize(outSize);
    int x = outSize.x;

     

  • 使用图片的大小宽和屏幕的宽相除,图片的高与屏幕的高相除,比大小,取最大值,或者取中间值

  •     /**
    图片设置缩放比例
    
    @author 刘楠 *
    
    2016-3-3下午1:20:28 */ @SuppressLint("NewApi") public class MainActivity extends Activity {
    
    private static final String TAG = "MainActivity";
    /*
     * 源图片
     */
    private ImageView src;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 源图片
        src = (ImageView) findViewById(R.id.src);
        /*Options options = new Options();
        options.inJustDecodeBounds=true;
         BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/2.jpg",options);*/
    
        /**
         * 得到屏幕的宽高
         */
        WindowManager manager = (WindowManager) getSystemService(WINDOW_SERVICE);
    
        Display defaultDisplay = manager.getDefaultDisplay();
        Point point = new Point();
        defaultDisplay.getRealSize(point);
    
        int screenWidth = point.x;
        int screenHeight = point.y;
    
        Log.d(TAG, "屏幕宽:"+screenWidth);
        Log.d(TAG, "屏幕高:"+screenHeight);
        /*
         * jpg图片解析
         */
        try {
            ExifInterface jpgExifInterface = new ExifInterface(
                    Environment.getExternalStorageDirectory() + "/2.jpg");
            /*
             * 图片的宽度
             */
            String width = jpgExifInterface
                    .getAttribute(ExifInterface.TAG_IMAGE_WIDTH);
            /*
             * 得到图片的高度
             */
            String height = jpgExifInterface
                    .getAttribute(ExifInterface.TAG_IMAGE_LENGTH);
    
            Log.d(TAG, "图片宽:"+width);
            Log.d(TAG, "图片高:"+height);
            //计算比例
            int scale=Integer.parseInt(width)/screenWidth>Integer.parseInt(height)/screenHeight?Integer.parseInt(width)/screenWidth:Integer.parseInt(height)/screenHeight;
    
            //设置显示
            Log.d(TAG,"比例:"+scale);
            //调置采样率,比例
            Options opts = new Options();
            opts.inSampleSize=scale;
            //使用工厂再次解析
            Bitmap decodeFile = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory() + "/2.jpg", opts);
    
            //设置图片显示
            src.setImageBitmap(decodeFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

     

  • 4.图片的一些常用操作

    只需要更改Matrix

    Matrix matrix = new Matrix();
        //移动第一个参数x 水平, 第二个参数y高度,可以是负值
        /*
         * degrees角度:
         * px:开始旋转的水平坐标
         * py:开始旋转的垂直坐标
         */
        matrix.setRotate(90, bitmap.getWidth()/2, bitmap.getHeight()/2);
    

    前者是在原图基础上做变化,后者是在目前的效果基础上做变化

    5.自定义画板涂鸦

    
    
    布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layoutwidth="matchparent" android:layoutheight="matchparent" android:orientation="vertical" >
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="15dp"
                android:orientation="horizontal" >
        <!-- 画笔颜色 -->
                <View
                    android:id="@+id/red"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:background="#ff0000" />
    
                <View
                    android:id="@+id/green"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:background="#00ff00" />
    
                <View
                    android:id="@+id/blue"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:background="#0000ff" />
    
                <View
                    android:id="@+id/yellow"
                    android:layout_width="5
    
    
    
     
    分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

    您可能想查找下面的文章:

    • 安卓第十八天笔记--简单动画,安卓第十八天--
    • 安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像
    • 安卓第十二天笔记-广播,安卓第十二天广播

    相关文章

    • 2017-05-26Intent(三)向下一个活动传递数据,intent传递
    • 2017-05-26安卓高级组件-----自动编辑文本框,安卓-----文本框
    • 2017-05-26Android简单的ListViewDemo及每个控件的点击事件,listview控件点击事件
    • 2017-05-26安卓高级组件-----图像切换器,安卓-----切换器
    • 2017-05-26Android开源库集合(工具),android开源库集合
    • 2017-05-26Android--控件属性汇总
    • 2017-05-26SwipeMenuListView框架完全解析,swipemenulistview
    • 2017-05-26把一张图缩小放到另一张背景图上。,一张背景图
    • 2017-05-26Android实战简易教程-第六十六枪(服务器端搭建和服务器端Json数据交互)
    • 2017-05-26自定义控件详解(五):onMeasure()、onLayout(),onmeasureonlayout

    文章分类

    • JavaScript
    • ASP.NET
    • PHP
    • 正则表达式
    • AJAX
    • JSP
    • ASP
    • Flex
    • XML
    • 编程技巧
    • Android
    • swift
    • C#教程
    • vb
    • vb.net
    • C语言
    • Java
    • Delphi
    • 易语言
    • vc/mfc
    • 嵌入式开发
    • 游戏开发
    • ios
    • 编程问答
    • 汇编语言
    • 微信小程序
    • 数据结构
    • OpenGL
    • 架构设计
    • qt
    • 微信公众号

    最近更新的内容

      • 购物车动画(Android),购物车动画android
      • Android--Activity四种启动模式
      • android获取屏幕宽高与获取控件宽高,android获取控件
      • 自定义Dialog,android自定义dialog
      • 2.6.0 其他几种常用对话框基本使用
      • 一次奇怪的MySQL复制故障
      • 二层(链路层)数据包发送过程分析
      • 华为荣耀畅玩5C NEM-UL10 ROOT那些事儿(亲测成功),畅玩nem-ul10
      • 将Android系统源码导入Android studio的方法,androidstudio
      • Android新手入门2016(11)--非阻塞对话框AlertDialog

    关于我们 - 联系我们 - 免责声明 - 网站地图

    ©2020-2025 All Rights Reserved. linkedu.com 版权所有