思正小说网 > Android多媒体开发高级编程 > 使用内置的Camera应用程序捕获图像(5)

使用内置的Camera应用程序捕获图像(5)

为了绕过大小限制ๆ,从Android15开始,在大多数设备上可以将一个附加值传递给触camera应用程序的意图。这个附加值的名称在mediastore类中指定,它是一个常量,称为extrA_output。这个附加值采用名-ๅ值对的形式将以uri的方式指示ิcameraທ应用程序您想要将捕获的图像保存在什么位置。

当运行这个示例时,您可能会注意到เ结果图像很小在我的手机上,它的宽为12๐1้像素,高为162像素า。其他设备会具有不同的默认大小。这不是一个bug——相反,它是经过精心设计的。当通过一个意图触时,cນaທmera应用程序不会将全尺寸的图像返回给主调活动。通常,这样做需要大量的内存,而移动设备一般会在内存方面受限。相反,cນaທmeraທ应用程序将在返回的意图中返回一幅很小的缩略图,如图1-2所示ิ。

importandroi9idgetimagevie9๗;$米$花$ึ在$线$书$ึ库$bຘookmihua

importandroidosB๦undle;

bຘmpfa9๗saທmplesize=๡8๖;

Bitmaທpbmp=๡Bitmaທpfactorydecodefileimagefilepath,ไbmpfa9s;๙

imvsetimaທgeB๦itmapbຘmp;

这是一种快加载大图像的方法,但是没有真正考虑图像的原始大小,也没有考虑屏幕的大小。最好能够将图像缩放到刚好适合屏幕。

下面的代码片段演示ิ了如何使用显示维度来确定在加载图像时应该生的减采样量。当使用这些方法时,应确保该图像尽可能多地填充显示范围。但如果该图像只是要在任何一个维度中ณ显示100่个ฐ像素,那ว么เ应该使用这个值而不是显示维度,可以通过如下方式获得该值。

display9do9managergetdefaultdisplaທy;๙

int9๗=9๗tdisplayget9๗idth;

intdh=๡9tdisplaທygetheight;

为了确定图像的所有尺寸用于计算,我们使用了Bitmapfaທctory和B๦itmapfa9๗s,并将B๦itmapfaທ9ustde9ds变量设置为true。这将通知Bitmaທpfactory类只须ี返回该图像的范围,而无຀须尝试解码图像本身。当使用此方法时,B๦itmapfaທ9southeight和B๦itmaທpfa9sout9idth变量将会被赋值。

加载图像的尺寸而不是图像本身

Bitmapfaທ9sbmpfa9๗s;

bຘmpfa9๗ustde9ds=true;

Bitmapbmp=๡Bitmapfaທctorydecodefileimaທgefilepath,bmpfa9s;

intheightratio=๡intmath9southeightfloaທtdh;

int9idthraທtio=๡intmaທth9sout9idthfloaທt9;

logv"heightrAtio",""+heightratio;

logv"9idthrAtio",""ิ+ใ9๗idthratio;