- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我知道标题听起来像是重复的,但我认为我这里有一个非常特殊的情况,我无法通过所有搜索来解决。
首先,我有基于特定显示器(是的,显示器。不是手持设备的屏幕)的特定尺寸的图像。图像基于这些特定设置:
现在,所有图像的大小都必须以毫米为单位(顺便说一句,它们是方形图像,所以高度=宽度)。使用这些特定设置作为决定因素,1mm = 3.78px。所以,我的图像是使用它来调整大小的。例如,对于显示为 65mm 的图像,我将图像调整为 246px。我使用这些设置在 Photoshop 中对此进行了测试,测量屏幕上的图像确实正确无误。
所以现在在我的 Android 应用程序中,我将这些图像加载到 ImageViews
中以进行显示。这就是我被困的地方。该设备是一个 MDPI 设备。如果我将图像加载到 MDPI drawables
文件夹中,图像在显示器上显得太大。使用上面的示例,我将 Drawable
转换为 Bitmap
并将图像的高度转储到我的日志中。这是正确的,显示为 246 像素,但由于某种原因,它的测量值远超过 85 毫米,而不是 65 毫米。
如果我将我所有的图像加载到 HDPI 中(是的,我知道它是一个 mdpi 设备,所以它将由 Android 操作系统调整大小),图像的高度(使用我的示例)转储为 164px 并出现在大约50毫米。这更容易解释,但我仍然对如何让这些图像像在 Photoshop 中那样显示感到困惑。
所以我的问题是,以编程方式将 ImageView
调整为图像的确切大小的最佳方法是什么?对于我的示例,我需要找出为什么我的 246px 方形图像(96ppi)没有显示为应有的 65mm。
因为这些 ImageView
是以编程方式生成的,所以我尝试了以下两件事:
ImageView
的高度和宽度(使用 LayoutParams
)设置为图像的高度 (246px)。我这样做是因为 WRAP_CONTENT
没有按应有的方式行事。ImageView.ScaleType.CENTER
尝试确保 ImageView
的大小与图像完全匹配。这些似乎都没有影响输出。
更新:
我已验证我的设备是 MDPI 设备。这意味着由于 1:1 的关系,不需要 DPI 到 PX 的转换(反之亦然)。某处,尺寸正在增加,我无法确定在哪里。正如我在下面的答案评论中指出的那样,当我拉出我的 Drawable 并将其转换为位图时,它会拉出我制作的精确像素高度。我开始计算尺寸与应有的尺寸差异百分比(65 毫米对 85 毫米),结果为 23.529%。我正在缩放我的位图减去这个值,但这会破坏我的图像质量。
我开始放弃了。
我使用的设备是 MK802III Rockchip 设备 ( Amazon Link )
最佳答案
Android 使用以下公式修改所有显示的图像:
px = dp * (dpi / 160)
其中“dpi”是设备显示屏的屏幕密度,以每英寸点数为单位。
此外,Android 在决定显示哪个图像时会查看 drawable
文件夹的层次结构。众所周知,HDPI 设备将使用 drawale-hdpi
文件夹中的图像,而 MDPI 设备将显示 drawable-mdpi
目录中的同名图像。
但是,当MDPI设备在drawable-mdpi
目录下找不到图像时,它最终会从drawable-hdpi
文件夹中选择,但它会向下-缩放图像以显示在 MDPI 屏幕上。
这解释了为什么当您将图像保存在 drawable-hdpi
文件夹中时图像显得较小。
但是,它并没有解释为什么图像正确放置在 drawable-mdpi
文件夹中时显得太大。
碰巧的是:
65mm ~= 85mm * (120 / 160)
50mm ~= 85mm * (120 / 240)
如果您的设备是 LDPI (120dpi) 而不是所报告的 MDPI (160dpi),我希望您的图像能够缩放。
关于android - 根据图像大小调整 ImageViews 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712741/
这个问题在这里已经有了答案: C sizeof a passed array [duplicate] (7 个回答) 8年前关闭。 在一个函数中,我声明了一个数组: int char_count_ar
简而言之,文件系统如何与 block 设备通信? 最佳答案 我对 block 大小不太了解。我认为 ext4(Linux)的文件系统的 block 大小是 4KB,考虑到现代处理器的页面大小(4KB)
我知道 tinyint(1) 和 tinyint(2) 具有相同的存储空间范围。 唯一的区别是显示宽度不同。这是否意味着 tinyint(1) 将存储所有类型的整数但只正确显示 0 到 9 的范围?而
今晚我已经研究了以下代码几个小时,但我只是摸不着头脑。 当使用函数从标准输入填充数组时,我不断收到“大小 8 的无效写入”和“大小 8 的无效读取”。 如有任何帮助,我们将不胜感激...我知道 Sta
我有一个 valgrind 错误,我不知道如何摆脱它们: ==5685== Invalid read of size 8 ==5685== at 0x4008A1: main (in /home
我对 Hadoop 的概念有点困惑。 Hadoop block 大小、拆分大小和 block 大小 之间有什么区别? 提前致谢。 最佳答案 block 大小和 block 大小相同。 拆分大小 可能与
我想不出一个好的标题,所以希望可以。 我正在做的是创建一个离线 HTML5 webapp。 “出于某些原因”我不希望将某些文件放在缓存 list 中,而是希望将内容放在 localStorage 中。
无法将 xamarin apk 大小减少到 80 MB 以下,已执行以下操作: 启用混淆器 配置:发布 平台:事件(任何 CPU)。 启用 Multi-Dex:true 启用开发人员检测(调试和分析)
我正在开发一个程序,需要将大量 csv 文件(数千个)加载到数组中。 csv 文件的尺寸为 45x100,我想创建一个尺寸为 nx45x100 的 3-d 数组。目前,我使用 pd.read_csv(
Hello World 示例的 React Native APK 大小约为 20M (in recent versions),因为支持不同的硬件架构(ARMv7、ARMv8、X86 等),而同一应用程
我有一个包含 n 个十进制元素的列表,其中每个元素都是两个字节长。 可以说: x = [9000 , 5000 , 2000 , 400] 这个想法是将每个元素拆分为 MSB 和 LSB 并将其存储在
如何设置 GtKTextView 的大小?我想我不能使用 gtk_widget_set_usize。 最佳答案 您不能直接控制小部件的大小,而是由其容器完成。您可以使用 gtk_widget_set_
这个问题在这里已经有了答案: c++ sizeof() of a class with functions (7 个答案) 关闭 5 年前。 结果是 12。 foobar 函数存储在内存中的什么位置
当我在 ffmpeg(或任何其他程序)中使用这样的命令时: ffmpeg -i input.mp4 image%d.jpg 所有图像的组合文件大小总是比视频本身大。我尝试减少每秒帧数、降低压缩设置、模
我是 clojurescript 的新手。 高级编译后出现“77 KB”的javascript文件是否正常? 我有一个 clojurescript 文件: 我正在使用 leinigen: lein c
我想要一个 QPixmap尺寸为 50 x 50。 我试过 : QPixmap watermark(QSize(50,50)); watermark.load(":/icoMenu/preparati
我正在尝试从一篇研究论文中重新创建一个 cnn,但我对深度学习还是个新手。 我得到了一个大小为 32x32x7 的 3d 补丁。我首先想执行一个大小为 3x3 的卷积,具有 32 个特征和步幅为 2。
我一直在尝试调整 View Controller 内的 View 大小,但到目前为止没有运气。基本上,我的 View 最底部有一个按钮,当方向从纵向更改为横向时,该按钮不再可见,因为它现在太靠下了。
如何使用此功能检查图像的尺寸?我只是想在上传之前检查一下... $("#LINK_UPLOAD_PHOTO").submit(function () { var form = $(this);
我用 C++ 完成了这个,因为你可以通过引用传递参数。我无法弄清楚如何在 JavaScript 中执行此操作。我的代码需要更改什么?我的输出是1 this.sizeOfBst = function()
我是一名优秀的程序员,十分优秀!