質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • PowerShell

    465questions

    Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

  • ImageMagick

    114questions

    ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。

PowershellでのMagick.Netの読み込みについて

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 863

shori0128

score 17

前提・実現したいこと

プログラミング初心者です。
あるサイトから参考にしたコード使って、PowerShellによりあるディレクトリ内を監視し、そこにjpgデータが作成されたらImageMagickを使ってサムネイルの作成をしようとしています。

発生している問題・エラーメッセージ

ImageMagickのアセンブリの読み込みはできていそうなのですが、インスタンスの作成をしようとすると「dllを読み込めませんでした」のメッセージが表示されます。

エラーメッセージ
Just-In-Time (JIT) デバッグを呼び出すための詳細については、
ダイアログ ボックスではなく、このメッセージの最後を参照してください。

************** 例外テキスト **************
System.DllNotFoundException: DLL 'Magick.NET-Q16-x86.Native.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)
   場所 ImageMagick.MagickSettings.NativeMethods.X86.MagickSettings_Create()
   場所 ImageMagick.MagickSettings.NativeMagickSettings..ctor()
   場所 ImageMagick.MagickSettings..ctor()
   場所 ImageMagick.MagickImage..ctor()
   場所 ImageMagick.MagickImage..ctor(String fileName)


************** 読み込まれたアセンブリ **************

中略

Magick.NET-Q16-x86
    アセンブリ バージョン: 7.0.0.0
    Win32 バージョン: 7.0.4.701
    コードベース: file:///C:/Program%20Files/ImageMagick-7.0.4-Q16/lib/net40-client/Magick.NET-Q16-x86.dll


************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
またはコンピューター (machine.config) の構成ファイルの jitDebugging 
値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
なりません。

例:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
ハンドルされていない例外はすべてコンピューターに登録された
JIT デバッガーに設定されなければなりません。

該当のソースコード

PowerShell

try
{
    Add-type -AssemblyName System.Windows.Forms | Out-Null

    $frm = New-Object System.Windows.Forms.Form
    $frm.WindowState = [System.Windows.Forms.FormWindowState]::Minimized
    $frm.ShowInTaskbar = $false

    $watcher = New-Object System.IO.FileSystemWatcher # FileSystemWatcherの作成
    $watcher.Path = "C:\tmp"                          # 監視対象のフォルダ指定
    $watcher.Filter = "*.jpg"                         # フィルター(配列化)
    $watcher.NotifyFilter = [System.IO.NotifyFilters]::FileName
    $watcher.SynchronizingObject = $frm

    Add-type -Path C:\Program` Files\ImageMagick-7.0.4-Q16\lib\net40-client\Magick.NET-Q16-x86.dll

    # イベント(非同期処理)
    $watcher.Add_Created({
        Write-Host "監視中"
        $image = New-Object ImageMagick.MagickImage C:\tmp\Desert.jpg
        $image.Resize(180, 160)
        $image.Write("C:\tmp\Desert2.jpg")
        $watcher.EnableRaisingEvents = $false # 監視終了
        $frm.Dispose()
    })

    Write-Host "----- 監視開始 -----"
    $watcher.EnableRaisingEvents = $true      # 監視開始
    [void]$frm.showdialog()
}
catch [Exception]

{
    Write-Host $_.Extension
}

試したこと

Get-Assemblyコマンドにより、アセンブリが読み込めていることは確認しましたが、それ以上はどこから調べればよいのか分からずお手上げ状態です。

補足情報(言語/FW/ツール等のバージョンなど)

Powershell v.4.0

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • PowerShell

    465questions

    Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

  • ImageMagick

    114questions

    ImageMagickとは、画像の表示や操作を行うオープンソースのソフトウェアです。プログラムはCで書かれており、GIFやJPEG、PDFなど画像ファイルフォーマット100種類以上に対応しています。