Image 使用PowerGUI将ps1转换为exe时包含图片

Image 使用PowerGUI将ps1转换为exe时包含图片,image,powershell,exe,picturebox,powergui,Image,Powershell,Exe,Picturebox,Powergui,我使用PowerGUI编辑器将ps1文件转换为exe文件。原因是我不想让人们看到我的源代码。该脚本包括一个自己的带有图片的小GUI。我的问题是,在将脚本转换为exe文件后,只有当图片存在于特定路径上时,才会显示它。如果我从该路径删除或移动图片,则在启动exe时不会显示 如何将图片包含到exe中?我希望最后只有一个文件…一种方法是使用以下命令将图像转换为Base 64字符串: [convert]::ToBase64String((get-content C:\YourPicture.jpg -en

我使用PowerGUI编辑器将ps1文件转换为exe文件。原因是我不想让人们看到我的源代码。该脚本包括一个自己的带有图片的小GUI。我的问题是,在将脚本转换为exe文件后,只有当图片存在于特定路径上时,才会显示它。如果我从该路径删除或移动图片,则在启动exe时不会显示


如何将图片包含到exe中?我希望最后只有一个文件…

一种方法是使用以下命令将图像转换为
Base 64字符串

[convert]::ToBase64String((get-content C:\YourPicture.jpg -encoding byte)) > C:\YourString.txt
使用文本文件“C:\YourString.txt”中生成的字符串,您可以复制并粘贴到代码中,然后将其加载到表单上的图片对象中,如下所示:

$logo.Image = [System.Convert]::FromBase64String('
iVBORw0KGgoAAAANSUhEUgAAAfQAAACMCAYAAACK0FuSAAAABGdBTUEAALGPC/xhBQAAAAlwSFlz
AAAXEQAAFxEByibzPwAAAAd0SU1FB98DFA8VLc5RQx4AANRpSURBVHhe7J0FmBTX0oZ7F1jc3d3d
nU+dOtXw4MGDZfft25fmyJEjPu+//76Xqzke8pCHPOQhD3lIQGxxcGSapvHdd9+FF3hHEdjGFHgn
          .......      Many more lines of string   .......
OqelFQzDMAzD/CZoztADbUwhUm0JERoXCNfEQYhyPAQryiBIUQSBiiTwl1sb3skwDMMwzG+KWLVe
jTEBH6U7JvJ0CJQXoaGPQMWBm5W+Va27k14MwzDMfwCA/wfUstOLO+nBIAAAAABJRU5Jggg==')
这样做意味着您的图像已经存储在代码中,不需要从某处加载


注意:确保磁盘上的图片大小是您能获得的最小大小,因为生成字符串可能需要一些时间,并且可能会产生数千行。所以我建议你只使用小于75千字节的图片。你可以用大一点的,但这需要很长时间来处理

谢谢大家!!它工作得很好,很容易解决我的问题。我以前从未想象过这样的解决方案,商业程序员是否也像这样将内容存储到他们的exe文件中?那会很有趣。唯一的缺点是将基串粘贴到脚本中后脚本的大小:图片大小约为500 KB,基串大小约为1500 KB。但我可以接受;-)@你能接受这个答案吗?是的,我想象有一些商业程序员使用类似的技术在脚本中存储项目。您可以使用其他一些稍短的格式,但我不知道在
PowerShell
中有这样的格式。