第一个弄了一个关于DICOM图像的问题
DICOM是标准医学器材生成的图像,不算是常见的图像格式,所以需要专门的解析,拿到项目的时候已经有解析方面的代码了(有一个开源的项目,什么名字忘了,老外写的),不过写得乱套,要我加一个播放动画功能,这种图像可以从数据中提取出来像素成为Bitmap,转换要经过像素计算,速度不理想,但是既然是可以转成Bitmap对象那就好说,准备了一个AnimationDrawable,Bitmap转了Drawerable然后就是addFrame(),添加完成,一播放,咦,尺寸小了一圈,跟原来展示在ImageView里的差了不少,于是我去翻代码。最初怀疑是ImageView里做了缩放,结果代码里套了好几层,跟了几段代码,无果。我又想到是不是前位大哥在转换前做了缩放,于是又一通翻,还是没找到。
无意中我想对比一下我的图像和原来的差距比例的时候,我发现了一个神奇的数字,我的图形和原来图形比例相关1.5倍,这让我想起了像素密度的事,于是动手试了一下,Bitmap.setDensity(),为了不出错,取了一下设备的像素密度,妈妈的,居然成功了,总结一下原因 。
Bitmap 对象在转换BitmapDawable对象前没有注意Bitmap对象的像素密度,因为是从DICOM转换过来的,所以忽略了这一点,经过Bitmap.setDensity()把Bitmap对象设置成同设备相同的密度解决了,这里需要注意,并不是所有情况都需要设置,因为这个图像转换的 特殊性,在默认情况下应该是不用这样的,所以经常玩像素的小伙伴们注意一下吧