2014-12-25 4 views
-1

동적으로 HTML 파일에 이미지를 삽입 해 봅니다. 동적으로 말하면 사용자가 물어볼 것입니다. 여기서는 상상할 수 있습니다. 두 경우 모두 사용자가 코드를 실행해야합니다. 특정 폴더에 이미지를 넣으십시오.동적으로 이미지를 HTML 파일에 삽입합니다.

generate-html -includeImages과 같은 스위치 매개 변수를 사용하면 switch 매개 변수가 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 페이지에 삽입 할 수 있습니까? 내 머리 속에 2 가지 접근법이 있지만 어떻게 실현하는지 잘 모릅니다. 당신이 더 좋은 생각을 가지고 있다면 나는 그것을 어떻게 깨달을 수 있는가? 감사합니다. – kekimian

답변

4

이미지의 배열은 다음과 같이 처리 할 수있다 : 당신이 스위치 -IncludeImage를 사용하여 미리 정의 된 폴더에서 이미지를 읽거나 -IncludeImage를 통해 이미지 경로를 전달하려는 여부

$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'/>" 
} 

매개 변수는 귀하에게 달려 있습니다. 후자는 코드가 특정 폴더에서 독립적으로 만들어지기 때문에 좀 더 다재다능한 접근 방법이지만 아마도 두 방법 모두 사용할 수 있습니다.

은 다음과 같을 수 스위치 매개 변수를 사용하는 함수 :

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"예외 호출 : "값은 null 일 수 없습니다. 매개 변수 이름 : inArray" – kekimian

관련 문제