ドットネット型のインスタンス

投稿者:schutzen 投稿日:2019/11/14(Thu) 16:34:48 No.2520

こんにちは。いつもお世話になっております。
エクスプローラーでjpeg画像の詳細プロパティに表示されるタグを、プロデルから編集しようとしています。
https://social.technet.microsoft.com/Forums/scriptcenter/en-US/8b398413-0728-4a8a-a593-d2e8b92b88f2/editing-image-exif-tags?forum=ITCG などのPowerShellの例を参考に、以下のように書いてみました。
-------
ファイル文字列は=「F:\test.jpg」
dotnet_imageというドットネット型(「System.Drawing.Image」)を作る
Imageは、dotnet_imageからインスタンスを作ったもの
imgは、dotnet_image:Fromfile(ファイル文字列)
-------
これを実行すると、3行目で次のようなエラーが出てしまいます。
-------
には、該当するコンストラクタがないためオブジェクトを作成できません。

[エラー番号900] [はじめ:32行目]
-------

そこで、少し書き直して、
-------
ファイル文字列は=「F:\test.jpg」
dotnet_imageというドットネット型(「System.Drawing.Bitmap」)を作る
imgは、dotnet_imageから「Bitmap」を{ファイル文字列}で呼び出したもの
-------
として実行してみると、次のようなエラーが返ってきました。
-------
発生した例外:
dotnet_imageから「Bitmap」を{ファイル文字列}で呼び出したもの(StaticCallExpression)
-------

インスタンス生成がうまく行っていないように思われるのですが、この場合どのように書けばよいのでしょうか。よろしくお願いいたします。

静的メソッドの呼び出しではインスタンスは不要です

投稿者:ゆうと 投稿日:2019/11/15(Fri) 16:31:20 No.2523

こんにちは ゆうとです。

ImageクラスのFromFileメソッドは、静的メソッドですのでドットネット型の「呼び出す」手順を使って呼び出します。
次のような感じでImage型のインスタンスを作ることができます。
----------------
ファイル文字列=「F:\test.jpg」
dotnet_imageというドットネット型(「System.Drawing.Image」)を作る
imgは、dotnet_imageから「FromFile」を{ファイル文字列}で呼び出す
----------------

参考にして下さい。

Re: 静的メソッドの呼び出しではインスタンスは不要です

投稿者:schutzen 投稿日:2019/11/17(Sun) 00:07:21 No.2524

ゆうとさん、早速のご返答ありがとうございます。調べてみましたら、基本的な所が理解できていなかったようで、お恥ずかしいです。

もう一つ質問よろしいでしょうか。
教えていただいた方法で生成したImage型のプロパティの取得やメソッドの呼び出しを試みています。例えば、
--------
ファイル文字列=「test.jpg」
dotnet_imageというドットネット型(「System.Drawing.Image」)を作る
imgは、dotnet_imageから「FromFile」を{ファイル文字列}で呼び出す
imgから「PropertyItems」を取得する
imgから「GetPropertyItem」を{271}で呼び出す
--------
では、最後の2行が「手順が複数あり、どの手順を実行するか決定できません。」でエラーになります。
自分なりに調べたところ、Image型オブジェクト≒プロデルの画像のBaseObjectと思われたのですが、ドットネット型の「取得する」、「設定する」は使えず、Image型オブジェクトのメンバーにアクセスするコードを書く必要があるのでしょうか。

▲ページの先頭へ

- WebForum -