从列中的 URL 添加图像你好亲爱的社区,
我有一个数据表,我想根据另一列(“路径”)中的 URL 路径添加图像列。
URL 列(“路径”)是根据前一列(名称+编号)构建的,以便为每行提供正确的 URL。 路径公式位于玩具数据集中或此处:
Char( "https://bulbapedia.bulbagarden.net/wiki/File:" ) || Char( :"#"n ) ||
Char( :Name ) || Char( ".png" )
其中开头是网站名称,“#”是 URL 中的数字,“Name”是 Pokemon 的名称,以“.png”结尾。 总之,URL 可以重定向到特定的 Pokemon 图像(例如: https://bulbapedia.bulbagarden.net/wiki/File:002Ivysaur.png )
我在基于此 URL 创建图像列时遇到问题,我尝试使用公式,但显然我的公式不正确(我尝试在社区和索引脚本中查找,但无法成功)。
我想要一个列(如屏幕截图或数据集中的第 2 列),其中公式查看路径列并从网站检索图像(如果可能,能够控制该图像的大小!)。
这可能吗?有人知道怎么做吗?
请查找附件中的玩具数据集的子集。
预先感谢您的回答!
消费者和市场研究数据混合和清理大规模定制回复:从列中的 URL 添加图像这很酷:
数据表和相关 JSL 工具中的图像 (2020-US-30MP-585)
回复:从列中的 URL 添加图像你好@Craige_Hales ,
非常感谢您的宝贵意见,并对我的答复延迟表示歉意。
解决方案正如您所提到的,是列公式(根据其他列值创建 URL)、表达式列(显示短图像)和列事件处理程序(通过单击单元格获得包含统计信息的更大图片)的组合)。
我有很多关于 jsl 脚本和特殊列格式/类型的知识需要学习,我很惊讶地看到所有的可能性(现在更好奇地发现新的可能性!)。 我将深入研究 jsl 脚本课程以获得基础知识。
非常感谢您的兴趣和回答。回复:从列中的 URL 添加图像你好@jthi !
惊人的 ! 非常感谢您的建议! 我可能会更新 jsl 代码以使 Windows 提供更多信息。
但我必须小心,这个 Pokémon 玩具数据集有 800 个条目,所以我选择 URL 图像的最小尺寸,并且我必须注意文件大小不要太大。
非常感谢你的帮助 !回复:从列中的 URL 添加图像如果需要,您还可以在事件处理程序中修改新窗口,以使新窗口提供更多信息(这也是缩放图像的可能位置之一)
这不是事件处理程序,而是一个示例脚本,可以做什么
Names Default To Here(1);
img = New Image(
New HTTP Request(
url("https://archives.bulbagarden.net/media/upload/2/21/001Bulbasaur.png"),
Method("GET")
) << send
);
img << scale(0.5);
New Window("001 - Bulbasaur", << Show Toolbars(0), << Show Menu(0),
V List Box(
align("center"),
Text Box("001 - Bulbasaur", <<SET font="" style=""></SET>回复:从列中的 URL 添加图像你好@jthi ,
在解析了一些 URL(如您在文件中显示的 URL)后,列属性集就像一个魅力! 非常感谢您的快速答复和完整指南!
我必须处理一些格式不正确的“名称”,并且仅在小数据集上提取图像一次(然后将它们合并),否则 JMP 开始失败......
谁知道我们可以使用 JMP 制作图鉴? :p
非常感谢您的解决方案!
回复:从列中的 URL 添加图像可以以各种组合使用的三个正交想法:
- 列公式 - 根据另一个单元格计算一个单元格的值
- 表达式列 - 包含不限于数字或字符串的值的单元格(图片、矩阵、JSL)
- 列事件处理程序 - 列的额外公式用于处理单元格单击(以及工具提示和颜色)
你可能想要这三个。 列公式可以从其他单元格构建 URL 字符串,从 URL 获取图像,调整图像大小,如果该列也是表达式列,则使用图像作为表达式。 open() 或 newimage() 将获取 .jpg 的 URL 并返回图像对象。
然后,事件处理程序可以使图像/单元格可点击;如果该列也是公式列,则单击处理程序可能会使用构建 URL 的其他单元格。 不要手动编写事件处理程序。 使用 GUI 创建和测试它们,然后如果您需要 JSL 来制作它们,请使用红色三角形捕获数据表的脚本并对其进行修改。 默认事件处理程序有一些样板 JSL,您需要研究它们,然后进行更改。
回复:从列中的 URL 添加图像示例数据中的 URL 不是图像的直接链接。 您必须从页面获取它们还是能够获得图像的直接链接? 例如对于灯泡(取决于大小) https://bulbapedia.bulbagarden.net/wiki/File:001Bulbasaur.png -> https://archives.bulbagarden.net/media/upload/thumb/2/21/001Bulbasaur.png/240px-001Bulbasaur.png 。 如果您无法获得直接链接,那么首先要做的可能是编写一个从页面解析图像 URL 的函数。
格式很可能总是非常相似,因此编写解析函数应该不会太困难

这可能有效,但不确定效果如何以及持续多久:
查看更多...
我已附加数据表,其中直接链接到一些图像,这些图像会将它们加载到数据表中,并且它还有单击事件处理程序以在新窗口中打开图像:

它使用具有此类公式的表达式列:
New Image(New HTTP Request(url(:Column 1), Method("GET")) << send)
根据数据表的使用/构建方式,最好删除公式/抑制评估(或使用 << 设置每个值),这样图像就不会被下载太多次。
图像加载到数据表后,单击 Even thandler 打开图像,如下所示:
Function({thisTable, thisColumn, iRow},
{},
New Window("IMG", New Image(thisTable:thisColumn[iRow]))
);
回复:从列中的 URL 添加图像非常感谢您的快速答复@jthi !
这已经对我有很大帮助,我会检查什么是可能的。 由于我显然是 JSL/脚本编写的新手,如果您有时间为事件处理程序表达式提供脚本,我将非常感激:)
我希望在列中包含小图像(而不仅仅是单击 URL 或打开浏览器),就像示例数据库中的数据集 SAS Offices.jmp 中一样(已解决:jmp 是否允许单元格内容成为超链接 - 第 2 页 - JMP 用户社区)
多谢 !
回复:从列中的 URL 添加图像事件处理程序应该能够处理这个问题。 一些例子可以从2022_Q1 MakeOverChallenge:以各种方式单击鼠标的操作。 当我有更多时间时,我应该能够使用提供的示例表(如果需要)制作一个示例。