多媒体编程

多媒体编程

  • 文字、图片、音频、视频

计算图片大小

加载大图片

  • 图片大小的计算
    图片大小=图片总像素*每个像素的大小
    bmp格式为无损格式为严格按上述公式计算的
  • 单色:只能表示两种颜色,只能使用两个数字即可,0和1 表示黑白
    • 只需要使用一个长度为1 的二进制数字表示颜色
    • 每个像素占用1/8个字节
  • 16色:能表示16种颜色,需要16个数字
    • 0-15,二进制表示:0000 -1111
      *每个像素需要一个长度为4的二进制数字表示颜色信息
      *每个像素占用1/2个字节
  • 256色:能表示256种颜色,需要256个数字
    • 0-255,二进制表示000000000-11111111
    • 每个像素需要长度为8的二进制数字
    • 每个像素占用1个字节
  • 24位色:能表示1千六百七十七万多种颜色
    *每个像素占用3个字节
    • R 0-255,占用一个字节
    • G 同上
    • B 同上
  • 32位色:支持透明色
    通过舍弃图片像素信息(右眼不可辨别的)
    jpeg png 为有损压缩,不按上述公式

加载大图片原理

android内存中加载图片是按照32位色加载图片的,因此一个像素大小为4字节。

压缩大图片

  • 图片总像素:7680000
  • 屏幕总像素:1533600
  • 图片元素原始尺寸2400*3200
  • 屏幕尺寸320 *480
  • 宽的缩放比例:2400/320=7
  • 高的缩放比例:3200/480=6
    必须按原始比例 ,不能使用不同数字缩放,不然宽高会失真,图片人物就会显胖或者瘦。
    如果按6比例压缩就会造成像素浪费 2400/6=400>320,浪费掉80 像素。
    因此按7比例压缩时3200/7=457.会产生上下黑边,不过不影响使用。
  • 两个比例不一样,取较大值

实现加载大图片

将图片的像素信息加载到内存中,和将图片文件加载到内存中不一样,图片的的像素信息为图片的 图片的总像素*每个像素所占的字节。

获取图片的边界即宽高
设置缩放比例

创建一个图片的副本

  • 为什么要创建副本
  • 有时候要对图片进行处理,加载图片的Bitmap是不能修改的


    直接加载图片

    直接加载图片是不能修改的。

创建一个Bitmap的副本

简单的特性处理

不是专业处理图片不用深入了解矩阵,谷歌有基本的效果矩阵。

平移代码

平移
缩放
旋转代码

镜面效果

画画版

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、图片处理 BMP无损图片(无压缩)占用内存的大小 = 图片总像素 * 每个像素占用的大小 每个像素占用的大小 ...
    stevewang阅读 606评论 0 0
  • 多媒体概念(了解) 文字、图片、音频、视频 计算机图片大小的计算(掌握) 图片大小 = 图片的总像素 * 每个像素...
    法神赵日天阅读 312评论 0 1
  • 视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文...
    Ffinefine阅读 332评论 0 0
  • 本文始发于我的博文App图片压缩裁剪原理和上传方案,以及那些有趣的事儿...,现转发至此。 目录 App怎么压缩质...
    zackzheng阅读 19,424评论 20 130
  • 我关注好久的博主发了长微博,他说做好事就是要让别人知道,现在的社会给我们太多的负能量,有必要传播正能量估计大家做好...
    未来的地理老师阅读 360评论 0 0