2014-12-25 100 views
-1

我尝试在我的HTML文件中动态插入图像,当我动态地说它意味着它将被用户询问时,这里2认为我想象,对于这两种情况用户必须在运行代码之前把图像放在一个特定的文件夹中。在HTML文件中动态插入图像

通过开关参数如:generate-html -includeImages,如果开关参数为true,则转换MyImagefolder中的所有图像,并在我的输出中插入一个。

通过接受多个值,在这种情况下,用户必须输入像generate-html -includeImages image1.gif, image2.gif

在这里,我使用的插入一个图像到我的HTML文件的代码图像名称参数:

$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
$image = "$PSScriptRoot\img.gif" 
$ImageBits = [Convert]::ToBase64String((Get-Content $image -Encoding Byte)) 
$ImageHTML = "<img src=data:image/png;base64,$($ImageBits) alt='My Image'/>" 

然后我在我的convertto-html命令中插入我的变量。

ConvertTo-Html -Body $style -PreContent "$imageHTML" | Out-File "$PSScriptRoot\report.html" 
+0

那么,什么是你的问题吗? –

+0

我的问题是我如何动态插入一个或多个图像在我的HTML页面?我头上有两种方法,但我不知道如何实现它。如果你有更好的想法,我怎么能意识到它会受到欢迎。 谢谢 – kekimian

回答

4

图像的阵列可以是这样的处理方式:

$images = Get-ChildItem "C:\path\to\*.gif" 
$ImageHTML = $images | % { 
    $ImageBits = [Convert]::ToBase64String((Get-Content $_ -Encoding Byte)) 
    "<img src=data:image/png;base64,$($ImageBits) alt='My Image'/>" 
} 

是否要使用一个开关-IncludeImage和从预先定义的文件夹读出的图像或经由-IncludeImage通过图像路径参数取决于你。后者可能是更通用的方法,因为它使您的代码独立于特定的文件夹,但这两种方法都可行。

使用开关参数看起来像这样的功能:

function Generate-Html { 
    Param(
    [Switch] 
    [bool]$IncludeImages 
) 

    if ($IncludeImages) { 
    $PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
    $images = Get-ChildItem "$PSScriptRoot\*.gif" 
    $ImageHTML = $images | % { 
     $ImageBits = [Convert]::ToBase64String((Get-Content $_ -Encoding Byte)) 
     "<img src=data:image/png;base64,$($ImageBits) alt='My Image'/>" 
    } 

    ConvertTo-Html -Body $style -PreContent $imageHTML | 
     Out-File "$PSScriptRoot\report.html" 
    } 
} 

同时使用数组参数的函数可能是这样的:

function Generate-Html { 
    Param(
    [Parameter()] 
    [string[]]$IncludeImages 
) 

    if ($IncludeImages) { 
    $ImageHTML = $IncludeImages | % { 
     $ImageBits = [Convert]::ToBase64String((Get-Content $_ -Encoding Byte)) 
     "<img src=data:image/png;base64,$($ImageBits) alt='My Image'/>" 
    } 

    ConvertTo-Html -Body $style -PreContent $imageHTML | 
     Out-File "C:\path\to\report.html" 
    } 
} 
+0

非常感谢这些例子。但不幸的是它不起作用。我收到文件夹中每个图像的错误消息: – kekimian

+0

Get-Content:找不到路径'C:\ windows \ system32 \ image.bmp',因为它不存在。 – kekimian

+0

使用“1”参数调用“ToBase64String”异常:“值不能为空 参数名称:inArray” – kekimian