又上班了,这半月写了几行代码,越看越丑,怎么办,记录点实际问题吧

第一个弄了一个关于DICOM图像的问题

DICOM是标准医学器材生成的图像,不算是常见的图像格式,所以需要专门的解析,拿到项目的时候已经有解析方面的代码了(有一个开源的项目,什么名字忘了,老外写的),不过写得乱套,要我加一个播放动画功能,这种图像可以从数据中提取出来像素成为Bitmap,转换要经过像素计算,速度不理想,但是既然是可以转成Bitmap对象那就好说,准备了一个AnimationDrawable,Bitmap转了Drawerable然后就是addFrame(),添加完成,一播放,咦,尺寸小了一圈,跟原来展示在ImageView里的差了不少,于是我去翻代码。最初怀疑是ImageView里做了缩放,结果代码里套了好几层,跟了几段代码,无果。我又想到是不是前位大哥在转换前做了缩放,于是又一通翻,还是没找到。

无意中我想对比一下我的图像和原来的差距比例的时候,我发现了一个神奇的数字,我的图形和原来图形比例相关1.5倍,这让我想起了像素密度的事,于是动手试了一下,Bitmap.setDensity(),为了不出错,取了一下设备的像素密度,妈妈的,居然成功了,总结一下原因 。

Bitmap 对象在转换BitmapDawable对象前没有注意Bitmap对象的像素密度,因为是从DICOM转换过来的,所以忽略了这一点,经过Bitmap.setDensity()把Bitmap对象设置成同设备相同的密度解决了,这里需要注意,并不是所有情况都需要设置,因为这个图像转换的 特殊性,在默认情况下应该是不用这样的,所以经常玩像素的小伙伴们注意一下吧大笑

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Vue3中,可以通过以下步骤来实现localStorage加持的本地历史记录: 1. 创建一个历史记录数组,用于存储用户的历史记录。 ``` const history = []; ``` 2. 在组件中监听输入框的输入事件,并将用户输入的内容添加到历史记录数组中。 ``` <template> <div> <input type="text" v-model="inputValue" @keyup.enter="handleInputEnter" /> </div> </template> <script> import { ref } from 'vue'; export default { setup() { const inputValue = ref(''); const handleInputEnter = () => { history.push(inputValue.value); localStorage.setItem('history', JSON.stringify(history)); inputValue.value = ''; }; return { inputValue, handleInputEnter }; } }; </script> ``` 3. 在组件初始化时,从localStorage中获取历史记录数组并赋值给history变量。 ``` <script> import { ref, onMounted } from 'vue'; export default { setup() { const history = ref([]); onMounted(() => { const historyFromStorage = localStorage.getItem('history'); if (historyFromStorage) { history.value = JSON.parse(historyFromStorage); } }); return { history }; } }; </script> ``` 4. 渲染历史记录列表,并在击每一项时将其赋值给输入框。 ``` <template> <div> <input type="text" v-model="inputValue" @keyup.enter="handleInputEnter" /> <ul> <li v-for="(item, index) in history" :key="index" @click="handleHistoryItemClick(item)"> {{ item }} </li> </ul> </div> </template> <script> import { ref, onMounted } from 'vue'; export default { setup() { const history = ref([]); const inputValue = ref(''); onMounted(() => { const historyFromStorage = localStorage.getItem('history'); if (historyFromStorage) { history.value = JSON.parse(historyFromStorage); } }); const handleInputEnter = () => { history.value.push(inputValue.value); localStorage.setItem('history', JSON.stringify(history.value)); inputValue.value = ''; }; const handleHistoryItemClick = (item) => { inputValue.value = item; }; return { history, inputValue, handleInputEnter, handleHistoryItemClick }; } }; </script> ``` 以上代码实现了一个简单的localStorage加持的本地历史记录功能,可以根据需要进行更改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cocode123456

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值