Android开发 camera拍照无法获取Exit信息

Android开发 camera拍照无法获取Exit信息,第1张

private void data2file(byte[] w, String fileName) throws Exception {

FileOutputStream out = null;

try {

out = new FileOutputStream(fileName);

Bitmap bitmap = BitmapFactorydecodeByteArray(w, 0, wlength);

Matrix matrix=new Matrix();

matrixpostScale(1f, 1f);

//旋转

int deg = thisgetWindowManager()getDefaultDisplay()getRotation();

if (deg == SurfaceROTATION_270) {

degree = 180;

matrixpostRotate(degree);

}

Bitmap dstbmp=BitmapcreateBitmap(bitmap,0,0,bitmapgetWidth(),

bitmapgetHeight(),matrix,true);

dstbmpcompress(CompressFormatJPEG, 100, out);

//outwrite(w);

outflush();

outclose();

dstbmprecycle();

bitmaprecycle();

} catch (Exception e) {

if (out != null)

outclose();

throw e;

}

}

生成地址后可以做这样处理,先旋转到合适的角度,再保存。

一、ImageView的setImageBitmap()是设置imageView组件的显示。它的定义和源码如下:

1、在源代码中输入:if this is used frequently,may handle bitmaps explicitly // to reduce the intermedite drawable abject;

2、它实际上是对setImageDrawable接口的封装,支持直接略过Bitmap对象进行组件的设置。需要指出的是这个方法设置时,进行大的处理时,注意对的缩放,否则会内存溢出。

扩展资料:

一、Bitmap设置代码:

1、ImageView的setImageBitmap()是设置imageView组件的显示,实际上是setImageDrawable接口的封装,支持直接略过Bitmap对象进行组件的设置。

2、需要指出的是这个方法设置时,进行大的处理时,注意对的缩放,否则会内存溢出。if this is used frequently,may handle bitmaps explicitly // to reduce the intermedite drawable abject;

二、根据位深度,可将位图分为1、4、8、16、24及32位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,相应的数据量越大。例如,位深度为 1 的像素位图只有两个可能的值(黑色和白色)。

1、所以又称为二值位图。位深度为 8 的图像有 2^8(即 256)个可能的值。位深度为 8 的灰度模式图像有 256 个可能的灰色值。

2、RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。

3、有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。

4、BMP文件是微软公司所开发的一种交换和存储数据的方法,各个版本的Windows都支持BMP格式的文件。Windows提供了快速、方便的存储和压缩BMP文件的方法。BMP格式的缺点是,要占用较大的存储空间,文件尺寸太大。

参考资料来源:百度百科-博士能IMAGEVIEW 15-45X50(78-7348)

参考资料来源:百度百科-Bitmap

在onActivityResult函数你忘记了这句 superonActivityResult(requestCode, resultCode, data);

附上我的代码(和你的相对应的),你相对应地方如果有问题就对照吧

Intent i = new Intent(

"androidmediaactionIMAGE_CAPTURE");

startActivityForResult(i,

ActivityDEFAULT_KEYS_DIALER);

//第二个函数

superonActivityResult(requestCode, resultCode, data);

ivPic = (ImageView) findViewById(RidivPic);

if (useCamera) {

if (resultCode == RESULT_OK) {

Bundle extras = datagetExtras();

myBitmap = (Bitmap) extrasget("data");

ivPicsetImageBitmap(myBitmap);

hasPic = true;

ivPicsetVisibility(ViewVISIBLE);

}

}

参考:

Android Bitmap 详解:关于 Bitamp 你所要知道的一切

Android Bitmap(位图)详解

是由大量且有限个数的像素点组成。把一张通过bitmap的方式创建到内存中,实际上就是在内存中创建了一个叫做Bitmap的对象,然后把 所有像素 解码后的数据存放在Bitmap对象里面,Bitmap就拥有了的宽高,透明度,颜色值等数据。所以Bitmap的创建是通过BitmapFactorydecodeXxx()。

Config是Bitmap类中的枚举类。像素由ARGB四个颜色通道组成。Config描述位图中像素的存储方式。 这里的存储方式,无非就是对颜色通道和用多大的容器(bit)来存储的排列组合。所以config会影响透明度,占用内存大小,保存成文件的大小,质量。

Config的字母表示该配置存储的像素的颜色通道,数字表示对应通道的数据用多少位来存储。

ALPHA_8:表示只存储alpha通道,使用8bit(1字节)的内存(容器)来存储一个像素。

RGB_565:表示存储RGB三个通道,分别使用5bit,6bit,5bit的内存(容器)来存储一个像素。

ARGB_4444:表示存储ARGB四个通道,每个通道都是以4bit的内存(容器)来存储一个像素。

ARGB_8888:表示存储ARGB四个通道,每个通道都是以8bit的内存(容器)来存储一个像素。

所以,ARGB_8888配置占用内存最大,质量最高。

压缩的一个思路就是降低的配置。

总内存 = 宽的像素数 × 高的像素数 × 每个像素点占用的大小

注:

1 byte = 8 bit

1 KB = 1024 byte

以上就是关于Android开发 camera拍照无法获取Exit信息全部的内容,包括:Android开发 camera拍照无法获取Exit信息、android: ImageView的setImageBitmap()方法、android调用系统摄像头拍照并显示图片的问题,请高手看下程序哪里错了,执行 myimage.setImageBitmap异常等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10157421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存