• 締切済み

Rubyでペイントの操作

以前にも質問させていただき、systemでRubyのプログラムからペイントを開くことができました。 もう一つ質問ですが、プログラムから開いたペイントを操作することは可能でしょうか? 具体的には画像のサイズ変更をしたいです。 system("C:/Windows/System32/mspaint.exe","sam.jpg") このようにsam.jpgを開く段階まではできました。

  • Ruby
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

windowsで他のアプリケーションを直接操作するのは、それなりに大変です。 (1) rubyライブラリに専用ライブラリが用意されていればそちらを使う。 (2) コマンドラインで操作可能なものは、systemなどでコマンドラインオプションを駆使する  → mspaintでは開くファイルしか指定できないかも? (3) OLE(COM)に対応しているものは、OLE/COM(rubyならwin32ole)で操作する  → mspaintは対応してなかったかと (4) その他、方法がなければwin32apiを使って(マウスクリックやキーボード操作等の)メッセージを送信して操作する  rubyに限らず、どの言語でもwin32apiの専門知識が必要とされます  マウスやキーボードで可能なことは何でも送信できますが、いろいろな前処理(ウィンドウハンドルの取得など)  が必要ですし後処理が必要な場合もあります。  → rubyならwin32apiライブラリ、rubyに限らず、VBでもperlでも特化言語以外はかなり非効率的かと思います。 win32api - rubyリファレンス http://www.ruby-lang.org/ja/old-man/html/Win32API.html ですので、代案として (1) rubyのライブラリを使ってリサイズする (#1の方の回答をご参照ください) (2) コマンドラインで完結するアプリケーションでリサイズする (3) OLEが使用可能(使ったことないけどphotoshopとかかな?)なアプリケーションでリサイズする win32ole活用法  http://jp.rubyist.net/magazine/?0003-Win32OLE (4) win32apiプログラムに特化した言語(uwsc等)のスクリプトを起動してリサイズのメッセージを送信する (これだと、ruby使う意味が全く無いですが) などがあるかと思います。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

systemって、Windowsでの操作で言えば「sam.jpgを右クリックして『アプリケーションを指定して→Paint』」と同じようなものです。それ以降の操作はPaint側でやる必要があります。 ちょっと調べましたが、Paintを外部から制御するのは、キーコードを送るくらいしか無さそうです。Excelとかだとw32oleモジュールで操作できたりしますが。 で、目的が「画像サイズの変更」だけなら、ペイントなぞ使わず、Ruby(+一部外部ライブラリ)だけでやる方法がよいのでは? 例えば、コマンドラインでの画像編集ソフトであるImageMagicKをRubyで使う RMagicKを使うとか http://gihyo.jp/dev/serial/01/ruby/0026

kuromame_human
質問者

お礼

ありがとうございます。 もう一つ質問したいのですが、コンソール上で >gem search -r rmagick と入力すると ERROR: http://rubygems.org/ does not appear to be a repository ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError) Errno::ETIMEDOUT: 接続済みの呼び出し先が一定の時間を過ぎても正しく応答しなか ったため、接続できませんでした。または接続済みのホストが応答しなかったため、確立 された接続は失敗しました。 - connect(2) (http://rubygems.org/yaml) とエラーが出てしまいます。。 何が原因なのでしょうか。

関連するQ&A

  • デフラグをしたらペイントが消えてしまいました

    タイトルのとうりです。四年ほど今のパソコンは使っており、一ヶ月ほど前初めてデフラグを行いました。行った直後は気づかなかったのですが、久しぶりにペイントを スタート→すべてのプログラム→アクセサリ と進んでいったのですが、なくなっていました。 探し方が分からなかったため、家電量販店で聞いてみたところ、Cドライブ→WINDOWS→system32→mspaint とやればいい、と教えてもらいました。 ですが、家へ帰って試してみても、mspaintというものは見つかりませんでした。 お分かりになる方はよろしくお願いします。

  • MSペイントが・・・無い・・・??

    身内のおさがりのノートパソコン(win98)を使用しているのですが、スタート→プログラムでアイコンを探してもどこにもペイントが見つかりません。 そこで、スタート→検索→ファイルやフォルダ→windows98(c:)でmspaintと入力して検索するとMspaint.lgcとMspaint.chmというファイルが見つかるのですが、.chmの方はヘルプが起動しますが、.lgcの方はダブルクリックすると 「C:\WINDOWS\APPLOG\MSPAINT.LGCは有効なwin32アプリケーションではありません。」と表示されます。 このPCにはペイントソフトが入ってないのでしょうか? それとも何らかの原因でペイントソフトが起動不能なのでしょうか? デジカメ画像の加工等で使用したいので復帰させたいのですが、どうすればよいでしょうか? 素人なので分かりやすく教えて下さい。 よろしくお願いします。

  • XPのペイントで困っています。

    XPのペイントで困っています。 ウィンドウズのペイントを使ってエクセルの画像データをjpgに変換しています。今までエクセルの画像をコピーしてペイントに貼り付けしてjpgで保存していました。一応このやり方で十分OKでしたが・・・PCを再インストールした後に同じ作業をしようとすると、画像データをペイントに貼り付けただけで小さな画像になり、jpgに変換する前の貼り付けた状態で明らかに劣化しています。 どのようにすれば解決できるのでしょうか? ご指導下さい。 以前行っていたものは出来上がりサイズが 大きさ235×292 サイズ11.6KB 再インストール後が 大きさ73×82 サイズ7.64KBになっています。 よろしくお願いします。

  • 【続き】windowsペイントを開く方法

    http://oshiete1.goo.ne.jp/qa4460498.htmlの続きです。 上記の方法で開きましたが、これをButton1で現在表示されている 画像をwindowsペイントで編集したい場合、 どの様なコードを打てば宜しいのですか? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("Windowsペイントを起動します。") Shell("c:\windows\system32\mspaint.exe", AppWinStyle.NormalFocus) End Sub 上記ではただ起動するだけでペイントには画像を態々開かないと ダメですよね。 いい方法教えて下さい。

  • ペイントをwindowsアクセサリに戻したい

     Windowsアクセサリからペイントが消えました。リモートデスクトップ接続も。  リモートデスクトップ接続は、Accessoriesの方に移動してた(もしくは前からあった?)のですが、ペイントは、  ・設定→システム→オプション機能→機能の追加 の中にも見当たりません。  mspaint.exeを直接起動できるので、使用はできるのですが、できれば以前の状態に戻したいので、やり方を教えて下さい。

  • ペイントの消失

    先日、アドウェアに感染していたのでspybotやad-awareなどを使って駆除を行いました。 直接関係があるのかどうかは分かりませんが、ペイントが使用できなくなり、ショートカット等も無くなっていました。 C:\WINDOWS\system32\mspaint.exe から直接開こうとしても見つからず、Windowsコンポーネントの追加と削除のアクセサリーとユーティリティにも項目がありません。 システムの復元等は、ここ最近ダウンロードやインストールしたファイルが消えてしまうので余り使用したく無いので…。 どうか回答宜しくお願いします。

  • ペイントが使えなくなってしまいました

    プログラム、アクセサリのペイントを実行しようとすると、エラーが発生したためmspaint.exeを終了します。っとなってしまいます。 使えないと困ってしまうので、なんとか修復する方法はないでしょうか? ここからは、多分なのですが、エラーの原因はペイントを終了するときに保存するかと聞かれ、yesにしたにもかかわらず、そのまま待たずにシャットダウンしたためだと思います。次の起動時からエラーが出てしまうようになってしまいました。 アドバイスよろしくお願いします。 OSはwin2000です。

  • vbaで画像ファイルを開き、サイズを変更して保存

    vbaで画像ファイルを開き、その後サイズを変更して保存することは出来るのでしょうか? ペイントで画像を開くのは Sub test() MyFileName = "C:\セット.jpg" Shell "C:\WINDOWS\system32\mspaint.exe" & " " & Chr(34) & MyFileName & Chr(34), vbNormalFocus End Sub これで出来たのですが その後、サイズ変更→ピクセル→ 水平方向 300 垂直方向 225 を指定して保存したいのですが そこまでVBAで可能でしょうか?

  • mspaint.exe

    ペイントの存在場所はc:\windows\system32ですが、その又下位の\dllcacheのなかにもmspaint.exeが存在します。これは異常で削除すべきなのか、放置してよいものか分かりません。以前はこの下位にしかなかったので開けませんでした。mspaint.exeと関連するファイルを\system32に再インストして正常になりました。

  • エクスプローラでの表示について

    自分はエクスプローラの表示を「詳細」にしていて、名前、サイズ、種類、更新日時を表示させています。 しかし、種類の表示で、GIFならGIFファイル、TXTならテキストドキュメントとちゃんと表示されているのですが、JPGに限っては%SystemRoot%\system32\mspaint.exeとペイントへのパスが表示されてしまいます。 ですので、ちゃんとJPGと表示させたいのですがどうすればいいのでしょうか?

専門家に質問してみよう