BitmapDecode 例子主要介绍了Android 平台对图像的解码功能,Android平台支持PNG, JPEG图像格式,并可以支持 gif动画。
Android API中用来解码图像的类主要有BitmapFactory (静态图像PNG或是JPEG)和Movie 解码动画(gif动画等)。
对图像或动画解码,数据源可以说byte 数组,InputStream ,资源ID,或者指定文件名。对于BitmapFactory来说,还可以通过BitmapFactory.Options 指定解码时的一些设置。
下面代码指定opts.inJustDecodeBounds = true,表示解码时只想获取被解码图像的长度和宽度,此时bm返回值为null, 而opts.outWidth, opts.outHeight中返回了图像的宽度和长度。这种用法解码器无需为被解码的图像分配内存而值是通过BitmapFactory.Options 的输出参数返回有关图像的一些信息。
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bm;
opts.inJustDecodeBounds = true;
bm = BitmapFactory.decodeStream(is, null, opts);
// now opts.outWidth and opts.outHeight are the dimension of the
// bitmap, even though bm is null
下面代码将采样大小设为4,相当于每隔4个像素采样一次,结果是解码后的图像为原图的四分之一(具体的采用算法由平台决定,并非简单的隔4个像素取其中一个像素值)。
opts.inJustDecodeBounds = false; // this will request the bm
opts.inSampleSize = 4; // scaled down by 4
bm = BitmapFactory.decodeStream(is, null, opts);
mBitmap = bm;
下面代码从资源文件通过InputStream解码图像:
// decode an image with transparency
is = context.getResources().openRawResource(R.drawable.frog);
mBitmap2 = BitmapFactory.decodeStream(is);
对应解码后的图像Bitmap对象,可以通过getPixels取的图像对应的像素值数组,有了这个像素值数组,Bitmap可以创建不同配置的图像,下面代码创建两种配置的图像:ARGB_8888,ARGB_4444,新图像每个像素占用的字节大小不一。
int w = mBitmap2.getWidth();
int h = mBitmap2.getHeight();
int[] pixels = new int[w*h];
mBitmap2.getPixels(pixels, 0, w, 0, 0, w, h);
mBitmap3 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_8888);
mBitmap4 = Bitmap.createBitmap(pixels, 0, w, w, h,
Bitmap.Config.ARGB_4444);
对应Drawable资源来说,更一般的做法是直接使用Resources对象来取得相应的Drawable资源:
mDrawable = context.getResources().getDrawable
(R.drawable.button);
mDrawable.setBounds(150, 20, 300, 100);
android.graphics.Movie对应可以用来解码.gif动画资源,从数组或是直接从InputStream中解码:R.drawable.animated_gif 为一飘动的旗帜动画。
is = context.getResources()
.openRawResource(R.drawable.animated_gif);
if (true) {
mMovie = Movie.decodeStream(is);
} else {
byte[] array = streamToBytes(is);
mMovie = Movie.decodeByteArray(array,
0, array.length);
}
分享到:
相关推荐
NULL 博文链接:https://kakukemeit.iteye.com/blog/1806388
android apidemos代码的示例解析,讲的挺全的
最新版ApiDemos Android SDK 中带有很多例子,其中ApiDemo 详细介绍了Android 平台主要API,分成了 · App · Content · Graphics · Media · OS · Text · Views 几个大类,每个大类又分为几个小类,...
Android ApiDemos apk, 包括Android presentation双屏异显 demon, App>Activity>Presentation
最新Android apidemos
API Demos 是 Google 为了 Android 开发者所提供的一个 Android API 合集,其中包含了很多的 API 范例,同时遵循了良好的代码规范,是一个值得开发者研究和学习的典型。android的ApiDemos,需要解压缩后使用。
android APIdemos,android 源码简单使用demos
Oracle Solaris 9 -man pages section 6: Demos-18
该Api Demos 源码是基于Android6.0 ,Eclipse下的,可以直接使用Android studio 导入工程即可。
Oracle Solaris 9 man pages section 6: Demos-18
Oracle Solaris 8 man pages section 6: Demos-38
Android 系统原生应用API示例程序集合,是初学Android 开发的重要参考资料 https://github.com/longtaoge
AndroidDemosStudio AndroidDemos ------- Android Studio
Android官网ApiDemos源码 供大家学习参考之用
api-ai-ios-sdk_demos api-ai-ios-sdk_demos的演示应用语音或文本>目的/操作> Json “为应用程序,设备和网络构建智能语音界面” 基于 获取示例以构建遇到问题因此将其提取到独立项目中在创建帐户,然后使用设置示例...
全文检索jar包资源:资源中包括从网上找到并下载的jar包资源,包括四个jar包:Lucene-core-2.0.0、Lucene-core-2.3.0、Lucene-demos-2.3.0、je-analysis-1.5.3。
github上有个开源工程repo:princeton-vl/RAFT,其中一部分模型文件存在google drive中,国内同学不好获取,因此将模型文件上传到csdn中。
API-Demos-api-16-android4.1:android api api
Android ApiDemos2.1版本,sdk自带的sample。
android示例源码 有需要的可下载看一下吧