[ruby-list:40602] Re: GDでjpegの写真を扱いたいが、その方法?質問)
From:
"Hisashi Yahata" <yahatah@...>
Date:
2005-02-07 01:38:43 UTC
List:
ruby-list #40602
矢幡です。桑島様とは都合により個人メールでやり取りし、ご教示いただきました。
その内容を、ここに再掲させてください。
まだ未解決です。解決法のご教示をよろしくお願いします。
============================
桑島雄一郎様
早速の回答を有り難うございました。自宅のメールに転送し、ここからメールしま
す。このために、返信先が不明ですので、直接個人宛メールしますがお許しくださ
い。
Rubyのバージョンとインストール方法ですが、永井さんから習ったOne Click
RubyInstaller 182-14_rc9 をインストールしました。
http://rubyforge.org/projects/rubyinstaller/ から入手しましたが、これは
Ruby1.8.2-preview3をベースにしたものだそうです。
ruby-GD-0.7.4-i386-mingw32-1.8.tar.gzをダウンロードして、GD.soを
c:\ruby\lib\ruby\1.8\にコピーして、下記のスクリプトを実行したところ、下記の
表示が出ました。
誠に恐縮ですが、解決法をご教示ください。
記
エラーの表示
This application has requested the Runtime to terminate it in an unusual
way.
Please contact the application's support team for more information.
Completed(3)
============script=========
require "GD"
size = 400
# キャンバスを作る
image = GD::Image.new(size, size)
# ペン色の定義
white = image.colorAllocate(255, 255, 255)
black = image.colorAllocate( 0, 0, 0)
red = image.colorAllocate(255, 0, 0)
blue = image.colorAllocate( 0, 0, 255)
green = image.colorAllocate( 0, 255, 0)
color = [white, black, red, blue, green]
# 適当に線を引く
for i in (0..20) do
fx = rand(size)
fy = rand(size)
tx = rand(size)
ty = rand(size)
co = rand(4) + 1
printf("image.line(%d, %d, %d, %d, %d)\n", fx, fy, tx, ty, color[co])
image.line(fx, fy, tx, ty, color[co])
end #for
poly = GD::Polygon.new
poly.addPt(100,50)
poly.addPt(50,100)
poly.addPt(150,100)
image.polygon(poly, blue)
# scale
poly.transform(0.5,0,0,0.5,0,0)
image.polygon(poly, red)
poly.transform(2,0,0,2,30,50)
image.polygon(poly, green)
image.filledRectangle(50, 50, 150, 150, blue)
image.arc(100, 50, 100, 50, 0, 360, blue)
image.fillToBorder(100, 40, blue, red)
oimg=open("testout3.png", "wb")
image.png oimg
oimg.close
===================================================
桑島です。
> ruby-GD-0.7.4-i386-mingw32-1.8.tar.gzをダウンロードして、GD.soを
> c:\ruby\lib\ruby\1.8\にコピーして、下記のスクリプトを実行したところ、下記
の
> 表示が出ました。
> 誠に恐縮ですが、解決法をご教示ください。
一般的にインストールする場所とは違いますがロードはされるので問題はないは
ずです。
> This application has requested the Runtime to terminate it in an unusual
> way.
> Please contact the application's support team for more information.
> Completed(3)
インストーラと取得したバイナリの組み合わせでは当方の環境でも再現しました。
ランタイムエラーなので、もはや私が追求できる領域を超えています。
Microsoftが提供しているランタイムが発行しているエラーなのでほとんどシス
テムエラーみたいなもんです。
ただし、Cygwinでコンパイルした環境であれば実行できていますし、Apolloに付
属しているRubyのライブラリディレクトリにGD.soをコピーして実行した場合は
実行可能でしたので、One-click-installerに含まれているRubyとの相性が悪い
のだと思いますが。
本来ならMicrosoftVC++でコンパイルされたGDライブラリがあればいいのです
が、コンパイル済みで配布してくれている所は現在なさそうです。
==========================================================
桑島様
情報を有り難うございました。
> インストーラと取得したバイナリの組み合わせでは当方の環境でも再現しました。
>One-click-installerに含まれているRubyとの相性が悪い のだと思いますが。
時間を割いていただき、恐縮です。
> 本来ならMicrosoftVC++でコンパイルされたGDライブラリがあればいいのです
Ruby/GD の説明を見ますと、 下記のようにインストール方法が紹介されていま
す。しかし、具体的な実行の方法が不明です。
このような方法について、どのような本やWebサイトに記述されているのでしょう
か。一般の本では見つかりません。
1. 拡張ライブラリ作成用のMakefileを作成する.
プロンプトから $ ruby extconf.rb [options...] と打ってください.
[options...] には以下のオプションを指定することができます.
* --with-jpeg
* --with-gd-include=[dir], --with-gd-lib=[dir]
2. 拡張ライブラリを作成する.
プロンプトから $ make と打ってください.ビルドが成功すれば "GD.so" が
作成されます.
3. インストール
# make install または # make site-install
と打てば,拡張ライブラリのインストールが完了します.
MicrosoftのC++を購入したので、これによって上記の操作が可能でしょうか。
いずれにしても、Rubyの解説の中に詳しい説明があるといいのですが。
矢幡