我正在尝试创建一个类似于这篇文章中提供的内容的脚本:
http://spotfire.tibco.com/tips/2014/02/25/dynamically-displaying-images-in-a-text-area/
唯一的区别是我正在尝试使用我保存在网络驱动器或本地计算机上的图像。我做了大量研究并尝试了不同的方法但似乎没有任何效果。我想我只需要一种方法来从文件中读取图像,而不需要所有与“webRequest”相关的活动。关于图像处理和blob使用的部分似乎很好。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
我发现你的问题非常有趣,并且遍布互联网寻找一种方法来实现这一点,我想我已经想出了一个很好的方法,可以融合你提供的链接和本地/网络文件的使用。
在下面的代码中,我使用了我的猫的图片和一张铃铛的图片来回转换。额外的转义反斜杠是python读取文件路径所必需的。我在本地和网络路径的示例中包含了2个路径,并且都工作。另请注意,此代码并不关心我的Bell图像是.gif而不是.png。
使用更多逻辑编码和文档属性,您可以更具体地告诉它您要打开哪个文件。 (如果property =“Dog”然后抓住狗路径,elif property =“Kid”然后抓住孩子路径等。)
使这项工作的关键元素是Image.FromFile( stringPath )函数。其余部分遵循源材料并将其保存为blob。
from System.IO import MemoryStream, SeekOrigin
from System.Drawing import Image
from System.Drawing.Imaging import ImageFormat
from Spotfire.Dxp.Data import BinaryLargeObject
if Document.Properties["CurImg"] != "Cat":
imgSrc = "C:\\Users\\USERNAME\\Pictures\\2013-07-14 19.20.18.png"
Document.Properties["CurImg"] = "Cat"
else:
imgSrc = "\\\\COMPANY\\DEPARTMENT\\USERNAME\\Private\\Bell.gif"
Document.Properties["CurImg"] = "Bell"
img = Image.FromFile(imgSrc)
stream = MemoryStream()
img.Save(stream, ImageFormat.Png)
stream.Seek(0, SeekOrigin.Begin)
blob = BinaryLargeObject.Create(stream)
Document.Properties["PngImage"] = blob
来源:
http://www.grasshopper3d.com/forum/topics/read-images-in-python - 用Python读取图像文件
http://spotfire.tibco.com/tips/2014/02/25/dynamically-displaying-images-in-a-text-area/ - 将图像转换为blob的源材料