计算机图形

1.计算机图形的表示方式:

在计算机中,图片是采用位图形式来实现的

单色位图(bmp):(白色)200*200=4万个像素点,8个字节是一byte,大概有5000byte,因为图片的头信息,和事件什么的都保存在图片里,实际图片大小为5.多kb(黑白,1个byte可以表示8个像素点0表示黑色,1表示白色)

256色位图,每一个像素点都有256中颜色,(256个组合不是256位,需要2的8次方个组合需要8位表示)2的8次方,故一个像素占8位,即一个字节.

计算计算机图片的大小:宽*高*(位图)位数/8

注意①Android中默认的位图属性位ARGB_8888,是32位位图,一个像素占用4个字节,在工作中我们需要使用RGB_565,是16位位图,一个像素占用2个字节

注意②矢量图到Android5.0之后才支持,所以开发中一般使用的是位图

|--位图:会随着图片的放大缩小,像素失真,内存占用大

|--矢量图:放大缩小不会失真,内存占用小

多媒体是多种媒体的继承,主要包括文本,音频,视频,动画...

二:加载图片到内存

  BitmapFactory.decodeFile("mnt/sdcard/big.jpg");

//安卓下默认32位位图,argb各占一个byte,故是32位位图

加载大图异常:OOM(out of memory)1.69M(一个像素要4个byte表示,实际大小是宽高*4)的图片要申请15.6M的内存而android中一个应用程序最大16M内存

三:加载大图

method1

  1.创建一个现象条件Option option = new O

  2.设置采样率option.inSampleSize=4宽高分别为原来的1/4

method2

  得到图片的宽高信息1

ExifInterface exif = new ExifInterface(Environment.getExternalStorageDirectory()+"/big.jpg");

//获取图片的宽高,只能用于jpg图片的宽高(头文件信息,)

int width = exif.getAttributeInt(ExifInterface.TAG_IMAGE_WIDTH, 0);获得宽

int height = exif.getAttributeInt(ExifInterface.TAG_IMAGE_LENGTH, 0);获得高

//图片宽高获取2

Options opts= new Options();//创建选项条件

opts.isJUstDecodeBounds=true;//只读取图片的头文件信息,不会加载到内存

//加载图片之前:opts.isJUstDecodeBounds=false;再将图片加载到内存,可以保证不管是什么图片都可以获取图片的宽高,计算出缩放比例

opts.outWidth;

opts.outHeight;//处理前宽高 

//获取屏幕的宽高

get systemService(Window_Service);返回对象WindowManger wm

wm.getDefaultDisplay().getWidth();//获取屏幕的宽,高同样

wm.getDefaultDisplay().getHeight();//获取屏幕的宽,高同样

 

  创建一个现象条件Option option = new Option();

  设置采样率option.inSampleSize=4宽高分别为原来的1/4(图片缩放的唯一标准跟据屏幕宽高和图片宽高设置采样比)//默认1,,,,4-8之间以4为准.只能2的n次方

BitmapFactory.decodeFile(图片路径,option);//造成OOM的关键步骤

  bitmap.getWidth();

  bitmap.getHeight();获得缩放后,图片的宽高

method2,获取屏幕的宽高

**通过上下文拿到

getresource().getDisplayMetrics();

,widthPixels;

.heightPiels;

//计算缩放比例

图片宽度/屏幕宽度>图片高度/屏幕高度?,选择大的

四:图片的处理

用代码编辑图片,最好处理的是图片在内存库中的拷贝,不去处理原图

//原图

Bitmap srcBitmap = BitmapFactory.decodeFile(mnt/.jpg)

iv_src.setImageBitmap(srcBitmap);

//拷贝原图

//创建一个和原图一样大小的空白画布

Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(),srcBitmap.getConfig());

//创建画板

Canvas canvas = new Canvas(copyBitmap);

//创建画笔

Paint paint = new Paint();

paint.setColor();

Matrix matrix = new Matrix();

时间: 2024-11-07 14:11:51

计算机图形的相关文章

Atitit.计算机图形图像图片处理原理与概论attilax总结

计算机图形1 图像处理.分析与机器视觉(第3版)1 数字图像处理(第六版)2 图像处理基础(第2版)2 发展沿革 1963年,伊凡·苏泽兰(Ivan Sutherland)在麻省理工学院发表了名为<画板>的博士论文, 它标志着计算机图形学的正式诞生.至今已有五十多年的历史.此前的计算机主要是符号处理系统,自从有了计算机图形学,计算机可以部分地表现人的右脑功能了,所以计算机图形学的建立具有重要的意义.计算机图形学在如下几方面有了长足的进展 第二章 颜色模型.图像基本知识.Phong光照模型 2.

软件测试 计算机图形中的error发现与处理

一般情况下,在计算机图形中,通过代码来构建人物模型是一件很困难的事,一般都是通过其他软件来构造人物模型,然后通过代码来控制人物的动画,纹理,渲染等. 我们上一次的图形大作业是模拟人物御空飞行的动画,在将天空场景构建完毕之后,导入任务模型的时候出了bug 首先是在浏览器默认的设置中不让访问外部文件,所以导入的时候一直出权限错误,后来百度通过添加权限启动可以访问文件,导入没有问题. 接着就是人物虽然导入进去了,但是怎么样都看不见人物,但是导入的代码什么的问题都是没有问题的,而且单独导入其他场景就没有

三维计算机图形

三维计算机图形(3D Computer Graphics)是计算机和特殊三维软件帮助下创造的作品.一般来讲,该术语可指代创造这些图形的过程,或者三维计算机图形技术的研究领域,及其相关技术. 三维计算机图形和二维计算机图形的不同之处在于计算机内存储存了几何数据的三维表示,用于计算和绘制最终的二维图像. 一般来讲,为三维计算机图形准备几何数据的三维建模的艺术和雕塑及照相类似,而二维计算机图形的艺术和绘画相似.但是,三维计算机图形依赖于很多二维计算机图形的相同算法. 计算机图形软件中,该区别有时很模糊

计算机图形初上手

--------------------Configuration: PenBrush - Win32 Debug--------------------Compiling...PenBrushView.cppd:\program files (x86)\microsoft visual studio\myprojects\penbrush\penbrushview.cpp(4) : fatal error C1083: Cannot open precompiled header file:

Android(java)学习笔记235:多媒体之计算机图形表示方式

1.多媒体 很多媒体:文字(TextView,简单不讲),图片,声音,视频等等. 2.图片 计算机如何表示图片的? (1)bmp 高质量保存    256色位图:图片中的每个像素点可以有256种颜色供选择,1个像素点使用1个byte表示就可以.(byte:00~ff)      24色位图:图片中的每个像素点可以有24种颜色供选择           16色位图:图片中的每个像素点可以有16种颜色供选择       单色位图:图片中的每个像素点可以有1种颜色供选择 (2)jpg良好质量保存 图形

第3章-计算机图形软件 练习题

什么命令可用来将OpenGL显示窗口的颜色设定为浅灰色?什么命令可用来将OpenGL显示窗口的颜色设定为黑色? glClearColor(211.0f/255.0f, 211.0f/255.0f, 211.0f/255.0f, 0.0); 浅灰色的RGB值为(211, 211, 211) glClearColor(0.0, 0.0, 0.0, 0.0); 列出OpenGL显示窗口左下角设定到像素位置(75,200).窗口宽度为200像素且高度为150像素的语句. glutInitWindowPo

360全景实景漫游,现在的大型企业都在用它

这是一个多元化的电子商务时代,然而一些平面的图片已不能满足如今企业营销的种种需求了,这时候就出现了360全景.把我们带领到了另一个视角当中,并且有着身临其境的感觉,就如同我们在一间房间里四处浏览景物一般,为我们的视觉带来了一种逼真的感觉!大部分人都是坐在电脑前,浏览这样的场景就会变得非常的真实.我们可以在这个领域当中想参观哪里参观哪里,同时,我们还可以将任何一个实物产品的实景放置在系统中,可任意旋转反动,从任何角度观察展示. 1.全:全方位,全面的展示了360度球型范围内的所有景致;可在例子中用

GPU渲染管线与可编程着色器

本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/71978861 这篇文章是解析计算机图形学界"九阴真经总纲"一般存在的<Real-Time Rendering 3rd>系列文章的第三篇.将带来RTR3第三章内容"Chapter 3 The Graphics Processing Unit 图形处理器"的总结.概括与提炼. 这章的主要内容是介绍G

three.js是什么,能干嘛,和webgl什么关系

如今浏览器的功能越来越强大,而且这些功能可能通过JavaScript直接调用.你可以用HTML5标签轻松地添加音频和视频,而且可以在HTML5画布上创建各种交互组件.现在这个功能集合里又有了一个新成员,即支持webGL.通过webgl可以直接使用显卡的计算资源,创建高性能的二维和三维计算机图形,然后在JavaScript里直接使用webGL编程,创建三维场景并生成动画,这个过程非常复杂,而且容易出错.three.js库可以简化这个过程. ----摘自<Three.js开发指南> 看了上面的摘文