PaintBBS help document
Menu
|
著作権者名 |
(c)2000-2004しぃちゃん |
ソフトウウェア名 |
お絵かきしぃ掲示板PaintBBS |
動作環境 |
Java1.*が使うことの出来るブラウザ(IEやネット
スケープ等) |
ファイル内容 |
spainter.jar アプレットです。バ
イナリファイルです。 |
使用許諾について |
このアプレットは個人法人に関わらずフリーです。 |
改造、作成したCGI,HTML等を付け加えたアーカイブ
の配布を許可します。 The
reverse engineering of an applet is forbidden. |
|
保証/免責 |
このソフトに対して何らかの保証を求めることは出来ませ
ん。 |
その他 |
フリーソフトではありますが著作権を放棄したわけではあり
ません。 |
連絡先 |
質問は出来る限り質問専用掲示板にてお願いします。 |
1
しぃペインターとは?
しぃペインターとは絵を描く機能を持ち、CGIに画像データ(フォーマットはJpegとPngの自動切換え)を送信する事が出来るアプレットの名前です。
(CGIは別の名前が付いている場合があります)またサムネイルとして描き手順のアニメーションを送信させ、それを再生させる機能もしぃペインターは持っ
ています。
このアプレットは単独ではあまり役に立ちません。何らかのサーバーシステム(CGI等)が必
要になります。
しぃペインターは次の事を基本的に念頭に置き作成されています。
初 心者も何とか使え、上級者はそれなりに程度満足する機能。
短 時間でそれなりの絵を作成することが出来るインターフェース。
高 速な処理速度。
前 世代のツール、PaintBBSのインターフェースに似せたインターフェースを用意。(インターフェースは複数搭載可能
PaintChatVersion3 との互換性。描写機能とインターフェース部分をPaintChatと共有する事により開発を容易にしています。また利点も数多くあります。
Java は今日全ての環境で動くとはいえなくなっていますが、出来る限り多くの環境での動作を可能にする為の工夫がされています。例えばWinとMacでは描写エ ンジンの部分が違う動きをします。
他国言語に完全対応。res_**.txt(**にはISO言 語識別コード)を用意するだけです。日本語はres_ja.txtで英語はres_en.txt。デフォルトはres.txtです。
しぃペインターは
お絵かき掲示板だけではなく、簡単な画像であればウェブだけで生成を完結出来る様にする目的の為に生成されました。例えばウェブ日記にこのツールを組み込
めば簡単にイラストを載せられる様になるでしょう。また市販のツールはインターフェースが固定されておりますが、しぃペインターはインターフェースの選択
が可能です。その為PaintBBS以上にユーザーの幅が広がるのではないかと期待出来ます。
初心者の為にもしぃちゃんの絵を描いた経験で得たある程度的を得た自動処理がある為、ある程度の絵を描くには最適です。例えばわざわざJPEGとPNGの
どちらで保存するか等、煩わしい選択も全て自動です。
CGIはしぃちゃんから提供する予定はありません。PaintBBSの経験からこの部分はよりスクリプト処理に強い作者に用意して貰う事により、より強力
なツールと多様化の利点が得られると言う結論が得られたからです。
2
PaintBBSの優れた(そして現時点ではPaintBBS固有の)補助機能の紹介
しぃペインターの生成する画像はPNG,JPEG, PCH(フォトショのPSDに相当するもの)の3つのフォーマットをサポートしています。
まずPNG付いては多少生成に時間が掛かりますが恐らく現在公開、利用されているどのJava系PNGエンコーダーよりもファイルの容量が小さくなる筈で す。(ファイルが大きいと50%程差が出る場合もあります)勿論完全な可逆式の画像です。またimage_interlaceをtrueにする事によりイ ンターレース表示対応の形式として送信可能です。
JPEGに関しては細かい圧縮率の変更が可能であり、最適なJPEGを生成される筈です。こちらも設定を参照し自動的に最適な画像が生成されます。また他 のツールと違いより綺麗に見えるような工夫がなされている為、極端に圧縮率を上げたとしてもある程度は劣化が気にならない筈です。
しぃペインターはファイル容量を軽くする為にJPEGをサポートしている為ユーザーがフォーマットを選ぶ事を通常許可していません。(CGIからの設定で 選択可能にはなります)よって圧縮率の高いPNGと最適な圧縮率を模索するJPEGとを自動的に選択する機能により
生成されるファイルの大きさは同系等のシステムよりもかなり小さくなるはずです。ただし 掲示板がJPEGとPNGを分けて処理するようなシステムが必要になる為多少CGI作者にしわ寄せが来ます(;_;)
生成する時間もCPUのスペックが低い場合で且つ全ての工程を通った画像、つまり一番圧縮率の高いJPEGか減色されたPNG画像に付いては最悪10数秒 かかります。メモリの消費量はかなり低く押さえていますし、メモリを流用可能な形態をしていますので時間は掛かりますがフリーズしたりする事はほぼありま せんのでご安心下さい。
PaintBBSよりさらに強力な画像復旧機能が搭 載されています。固有の機能で何らかのミスにより編集中にページを移動してしまったりウインドウを消してしまったりした時、直ぐに編集ページを開きなおす 事によりキャンバスに描かれた画像を復旧させる事が出来ます。
WindowのIEや簡易起動をONにしたネスケ6.1以降であればウインドウを閉じても同じ画像の大きさの設定で編集ページに再度訪れれば大抵は残って いますのでかなり心強いはずです。(ネスケ4やMacIEの場合はブラウザのウインドウを全て閉じると復旧不能になります。)
しぃペインターではPaintBBSと同じく画像編 集中のデータをそっくりそのままアニメーション表示させる事が可能です。しかも描写速度は前回バージョンより高速な為、多機能だからと言って遅くなると 言った心配は御座いません。
しぃペインターはセキュリティーに関しても細心の注 意を払っています。
投稿時のIPアドレスはプロキシーを無効化された生(若しくはそれに近い)IPです。アドレスを隠しての荒らし目的の投稿はほぼ不可能です。設定により変 更可能ですが、一定時間以内に投稿されたり一定量しか書き込みが無かったりする場合に投稿を事前に拒否する機能があります。
PaintBBSではエンピツ等のツールは固定され ていましたが、しぃペインターは外部からペン定義ファイルを読み込む形の為、細かくカスタマイズする事が可能です。さらにペン先やテクスチャ等殆どの部分 が置き換え可能になっています。インターフェースも複数用意されており、より多くのユーザーからの利用が期待できます。
非常に多機
能で且つ複数のインターフェースが用意されている都合上、しぃちゃん自身が使い方を書く事が困難になっています。それ程複雑な機能は搭載されておりません
ので色々触ってみてください。ヒントとして色々な場所を右クリックすると様々な特殊機能が活用可能になります。使い方はしぃツールの使い方を紹介するサイ
トを利用する事を強くお勧めいたします。 |
新規に設
置する場合 (New construction)
Please download any CGI files.(other
creaters) and see help document of
CGI Creaters .
CGIは別途ダウンロードする形になっています。新規に設置する場合はCGI同梱アーカイブをダウンロードする必要があります。
また設置方法はCGI作者の配布するヘルプをご覧下さい。 またしぃちゃんのホームページ
のダウンロードページに一部紹介させて頂いております。
バージョンアップについて
(about version up)
please replace spainter.jar,res folder, and
htmlfile.
spainter.jar,resフォルダ,htmlファイルを置き換えてください。
CGI別にバージョンアップ方法が異なる可能性がありますのでCGI作者のヘルプも併せてご覧下さい。
4
カスタマイズ customize
if
you wantcustomize,prease write tagofparam to oekaki.html.
<param
name="name of option" value="value of
option">
このアプレットは多くの箇所をカスタマイズする事が可能。
しかしすべて省略可能です。
oekaki.htmlアプレットタグ内のparamタグに以下のような情報を記載してください。
例:<param
name="image_bkcolor"
value="#ffffff">
適用か非適用の選択は適用の場合true,yes,1のどれかを記述して下さい。非適用はそれ以外の値、
例えばfalse,no,0を記述して下さい。未記述の場合はデフォルト値が適用されます。
nameに変更する場所、valueに変更する値を記載。設定は現在以下の通り。
image_bkcolor
painting color on the backgroundofcanvas image_bk painting tile image(jpeg or gif).on theapplet
backgroung count_layer default
count of layers undosize of undo(default size is 90) undo_in_mg color_textword colors color_bk painting color to applet ofbackground color_bk2draws lines on the background of applet color_icon painting color of icons color_frame frame of icons color_iconselect painting color of icons selection color_barcolor of scrollbars color_bar_hl color_bar_frame_hl bar_size
size of scrollbars tool_color_buttoncolors buttons(tool bar) tool_color_button2colors of buttons(toolbar) tool_color_textcoloroftext(toolbar) tool_color_bar
colorof value change bar(toolbar) tool_color_framecolor of buttons frame(toolbar) color_1〜12 color_1~12is palette colors layer_count |
キャンバスのサイズ変更等、重要ではあるがシンプルな設定。(掲示板によっては間接的に変更する必要がある)
image_width width of canvas image_height
height of canvas image_canvas
imagefilebegin on the canvas. animation_max
length of data for animaion(KByte.
default value is 0) pch_file popup
popup_parent security_click security_timer
When timein,as action to
security_url.(Unit is section) security_url
URLusedwhenany conflicts with
security security_postAnimageissent when security istouched. true or false send_advance UseadvancedURLConnection. trueor false dir_resource tools 圧
縮ファイル名の設定 |
JPEG,PNGのフォーマット指定等、非常に重要だが掲示板がサポートしていなかったり難しかったりする設定。
image_jpeg
Need JPEG Jpeg format(true or false) image_interlaceNeed interlace format(PNG only. True or false) image_size compress_level compresslevel(JPEG and PNG) url_save place send data of image(CGI or etc.) url_exit after fineshed,jump to URL. url_target
target of frame. poopoo CGI format and to synchronize,withtrue. send_header Valueis transmitted at the beginning of first
transmitting data. send_header_image_type true or false send_header_timer true or false send_header_count true or false 描写工程をカウントした数 値を拡張ヘッダの先頭に追加します。 セキュリティー系はこれを参照しています。 send_uencode true or false thumbnail_type thumbnail_type2 thumbnail_compress_level サムネイルの圧縮Levelを指定。JPEGサムネイルのみ影響を受けます。 thumbnail_width header_magic |
アプレットをバージョンアップしてもブラウザが認識せずバージョンが変わらない場合
ブラウザが新しいアプレットを認識せずキャッシュから
アプレットを取得する為このような状態が起こります。
とくにローカルで試しに開いて見た時等は良く前のバージョンのままになっています。
解決方法としてはアプレットのファイル名を変更し、
アプレットタグのarchive属性に書き込まれているファイル名を変更して下さい。
アーカイブにアプレットファイルspainter.jarが存在しない時
eoと言う解凍ソフトを使用している場合、「徹底解凍しますか?」と聞かれますが、
これを許可してしまいますとアプレットファイルまで解凍されてしまいます。
ですので徹底解凍の選択は「いいえ」を選択するようにしてください。
基本的に徹底解凍をすると正常に動作しないソフトがある可能性がある事を
覚えておくと良いかもしれません。
投稿が出来ない場合
サーバーが重い時、もしくは指定されたCGIが存在しない場合や
CGIの設定を間違えている場合の時に発生します。
投稿に失敗したとしても描いた絵は残っていますので、
しばらく待った後再度投稿する事をお勧めします。
パラメータのurl_saveの設定先にCGIがなかったりアクセス出来ない場合は成功しません。
またCGIと違う場所のWeb領域にspainter.jarが置かれている場合は送信が出来なくなる可能性があります。
値をhttp://から始まる絶対URLで指定すると良い場合もあります。
細かい設定は個々のCGI作者にお尋ね下さい。
アプレットが表示されない時(ステータスバーにc.ShiPainter not foundとでている時)
これはspainter.jarが見つからなかった時に起こります。
解決方法としてhtmlファイルをテキストエディッタ等で開き、<applet>タグ内のarchive内に書かれている、
spainter.jarをhttp://から始まるURLに修正して下さい。
例:spainterがhttp://foo.com/spainter.jarにある場合
<applet archive="http://foo.com/spainter.jar">
これで駄目な場合はそもそもhtmlに書かれたurlにspainter.jarが存在しない場合や
その場所に置く事を許可されていない場合等です。
ネットスケープ4.*環境の時,日本語が入ったローカルディレクトリで試した場合
アプレットは読み込まれませんので御注意下さい。
色数が増え、ファイルが大きくなりBBSの設置が難しい場合
色数や画像のサイズが増えますと画像データの大きさが大幅に増加します。
その場合そのまま使用すると使い勝手が悪くなりますので次のどれかを
採用するようにして下さい。
JPEGに対応した掲示板を利用して下さい。さらに圧縮率を変更する事により効果が高まります。
しぃペインターは画像のサムネイルを生成し、送信する機能があります。
サムネイルに対応したCGIを使用すれば画像が重くても大丈夫な筈です。
6
掲示板の作者への様々な情報(フォーマットやJPEG実装、拡張ヘッダ等に付いて)
this is the format of POST Data
S(1Byte
Character. Change is possible to another character with a
header_magic parameter.)
Length of The header for CGI author(8byte
Characters)
The header for CGI author
Length of Image(8byte
Characters)
\r\n(CR LF)
Image data(format is PNG or
JPEG)
Length of thumbnail(8byte Characters)
thumbnail(format is
PING or JPEG or AnimationData)
Length of thumbnail2(8byte
Characters)
thumbnail(format is PING or JPEG or AnimationData
)
Length is not transmitted, either, when there is not
thumbnail.
format of poo=true
0x00000000
\r\n(CR
LF)
Image data(format is PNG or JPEG)
Lnegth of
thumbnaill(8byte characters)
thumbnail(format is PING or JPEG or
AnimationData)
Content menu
(Japanese)
POSTで送信されるイメージデータと拡張ヘッダ
CGIに送信するデータの説明をします。
send_headerはアプレットのparamタグで記述した場合送信されます。
send_headerは付け足しても\rを使用しない限りpooCGIと互換性がなくなることはありません。
S(1Byteの識別文字
header_magicパラメーターを変更することにより変更が可能)
拡張ヘッダ長(必ず8文字8Byte)
拡張ヘッダ
画像の大きさ(必ず8文字8Byte)
\r\n(CR
LF。互換性の為入れています。ここから下はバイナリ含むの意味)
画像(PNGかJPEG)
サムネイル長(必ず8文字8Byte)
サムネイル(PNGかJPEGかPaintChatAnimationデータ)
サムネイル長(必ず8文字8Byte)
サムネイル(PNGかJPEGかPaintChatAnimationデータ)
長さは8文字のアスキー文字で送信されます。
足りない分は0で埋められます。(1は00000001)
サムネイルを送信しない場合はサムネイル長とサムネイルは送信されません。
poo=trueの時は従来の
0x00000000
\r\n(CR
LF)
画像データ(PNGかJPEG)
サムネイル長(必ず8文字8Byte)
サムネイル(PNGかJPEGかPaintChatAnimationデータ)
サムネイル長(必ず8文字8Byte)
サムネイル(PNGかJPEGかPaintChatAnimationデータ)
を送信します。
サムネイルを送信しない場合はpoo=falseであってもpooCGI互換です。
pooCGIとは互換ですが旧バージョンの藍珠CGIとは非互換ですので、
旧バージョンの藍珠CGIを利用する場合はpoo=trueをfalseに変えないで下さい。
拡張ヘッダはアプレットのパラメータ
<param
name="send_header"
value="この部分の文字列">
を送信します。この部分はCGI製作者が容易に開発を
可能にする為に入れた物ですので制限は特に定めてありません。
デフォルトはUTF-8ですのでShift-JIS等を利用したい場合は
<param
name="send_language"
value="sjis">と言う感じのパラメータを追加して
下さい。Microsoft製のJava,つまりWindouwsのIEはEUCに対応していませんので
御注意下さい。
send_header_image_typeがtrueの時はこの中の先頭にイメージの種類を示す追加データが記述されます。
サムネイルは
thumbnail_width,thumbnail_heightのどちらかに画像の大きさより
小さな値が入った場合作成、送信されます。
%での指定も可能。(どのパラメータにも指定可能であったりします)
アニメーションデータはこの値に関係なく送信されます。
compress_levelで圧縮レベルも変更可能。
返ってきた値がURL:と言う文字列が初めに来た場合、それに続く文字列をURLと解釈しそこへ飛ばす機能が追加されました。
JPEGを実装させる為のヒント
動作の説明
しぃペインターはサーバーの負担を減らすために JPEGを実装している為、
ユーザーがフォーマットを決める事を許可しておらず、イメージサイズにより自動的にフォーマットを決めます。
PNGとJPEGの振り分は、まず完全にイメージを再生させるPNGフォーマットを
仮に作成し、image_sizeよりサイズが上回る場合は不可逆なJPEGでのデータを作成します。
(この時JPEGが許可されていない場合は減色処理が施されます)
その後出来上がったJPEGがimage_sizeの1.5倍以上のデータであった場合指定された圧縮率の1.5倍の
圧縮率で再度JPEG化します。そうして出来上がったデータを今迄PNGが入っていた位置につけて送信されます。
注意点は例え圧縮率を上げたとしても必ずしもPNGよりJPEGの方が
データ量の減少が望めるわけではありません。一般に使用された色が少ない場合は
PNGの方が明らかに小さくなります。強引にJPEGを生成した場合サイズが大きくなり、且つ絵の再現率は悪いです。
その為自動的に切り替える方式を片方に固定させる事は可能ですが極力避けて下さい。
実装のヒント
Jpeg に関係するオプションは
image_jpeg |
JPEGを使用するかどうか(デフォルトで false |
image_size |
どのサイズまで来たらJPEGとして送信するか |
send_header_image_type |
拡張ヘッダの先頭部分にイメージの種類を書き込む かどうか |
compress_level |
圧縮率 |
thumbnail_type |
値が"jpeg"である場合はサムネイルは JPEGフォーマットになります。 |
の4つです。
簡易的な実装方法の説明とそれぞれの奨励している値の紹介
取りあえず良く解らない場合は次のようにオプションを設定して下さい。
<param name="image_jpeg" value="true">
<param name="image_size" value="60">
<param name="compress_level" value="15">
<param name="send_header_image_type" value="true">
そして拡張ヘッダの頭にあるimage_type=png&かimage_type=jpeg&を調べて
JPEGかどうかを調べればOKです。
細かい実装の説明
Jpegを作成するにはimage_jpegを trueに設定する必要があります。
それとimage_sizeに1以上を入れて下さい。丁度1の時は必ずJpegが生成されます。
JPEGデータは送信されるPNGの代わりにJPEGを入れて送信されます。
判別する方法は画像のバイナリデータを直接調べるか
<param name="send_header_image_type" value="true">
とする事により拡張ヘッダの先頭にimage_type=png&かimage_type=jpeg&と言う識別文字列が注入されます。
これを調べてください。
バイナリを直接調べる場合はPNGかどうかを調べるのが簡単です。
1ByteめからPNG\r\n(CRLF)と言う文字列が入っていますので
それを調べて下さい。このデータは固定であり不変ですので確実です。
PNGかJPEGしか無いのでPNGではない場合はJPEGと確定します。
あと実装にはあまり関係無いですがcompress_levelを変更する場合、
image_sizeも変更させる事によりデータ量の減少が望めます。
これは例えば65を設定している場合、圧縮率を上げても65KByte以内であれば
PNGとして送信される為劇的にデータ量の減少が望めない為です。
だったら1を設定して必ずJPEGを生成した方が小さくなると思うかもしれませんが、
前文に説明した通りPNGの方が小さく綺麗に出来る可能性がありますので
この容量まではOKだと思う値をimage_sizeに入れ、それを実現出来そうな圧縮率を
入れる、と言う風な設定方法を行って下さい。
簡単に言えばcompress_levelを上げた時はimage_sizeを下げ、逆の場合は上げて下さい。
compress_level=15とimage_size=60の設定を奨励します。
しかし圧縮率を上げてもそれなりに見れたりしますので圧縮率を上げるのは
一向に構いません。(PNGがあるので下げるのはあまり意味がないかも)
書き手順(アニメーション)の表示を実装させる為のヒント
動作の説明
このアニメーションデータはアンドゥされたデータを 保存する事はありません。
画像ファイルのように急にデータ量が大きくなるような事は無く、時間に比例して緩やかに
データが大きくなっていきます。数時間掛けても100KByte程ですので余裕がないサーバー以外は
簡単に実装できる事でしょう。アニメーションファイルを直接Javaアプレットが読み込む為、CGIとは無関係に
表示が可能です。このシステムの導入によりサーバーの負担を増加させるような類の物ではありません。
サムネイルと同様の扱いになっていますのであまりに大きなデータが送られてきた場合は
カットする事も苦痛では無い選択肢になる筈です。設定により送られてくるファイルの大きさを制限する事も可能です。
実装のヒント
アニメーションを保存したい人としたくないははっきりと分かれていますので選択可能な形にする事を奨励します。
アニメーション表示の実装をさせるためのヒント
thumbnail_type |
"animation"である場合はサムネイル部
分がアニメーションデータになります。 |
pch_file |
アニメーションファイルを示すURL。ビュワー時
は再生されるアニメファイルの位置で |
animation_max |
アニメーションデーターの最大値をKByte単位
で指定します。 |
オプションに
<param name="thumbnail_type" value="animation">
と入れる事によりサムネイル部分にアニメーションファイルが送信されます。
通常のサムネイルと併用して使いたい場合はthumbnail_type2もつかって下さい。
ビュワーは改造(解体、改良や付け加え等)さえしなければ
再配布可能ですので必要であれば配布用ファイル郡にビュワーを足してもOKです。
画像を投稿時、ロックに失敗したり画像が大きすぎた 場合、
時間を置いて投稿、また大きすぎる画像を編集しなおすチャンスを獲得させるため
例外的な処理を行う機能があります。そしてしぃペインターはエラーの詳細を文章で表示させる事が出来ます。
安定したエラー処理を行っておりますので少しでも失敗しそうであれば構わず返してしまっても
大丈夫だと思います。
スクリプトがエラー表示を返したい場合、die関数でも良いですが
サーバーによっては表示されないらしいので次のように返してください。
Content-type: text/plain \n\n
error\n
(ここから下の文章を全て表示させます。日本語可能)
text/plainではなくても良いですがこれが適当だと思いますのでこれを使って下さい。
改行は\nでも\r\nでも可能です。PaintBBSは一行目がerrorと小文字でぴったり一致する時のみ
HTTP的には正常であってもエラーと認識します。
Webサーバーからのエラー(設置ミス等)やdie関数から取得できるメッセージは
返されるメッセージを全て表示します。
エラーメッセージの文字コードはsend_languageに記述されている物が利用されます。
文字コードがサポートされないものであったり設定が無い場合はUTF-8として解読します。
日本語のエラーメッセージを行いたい場合はUTF-8の文章をあらかじめ定義しておいて返すか
明示的にsend_languageに文字コードを指定するようにして下さい。ただしこの場合は
JVMがコードをサポートしていない場合、文字化けします。
#Microsoft製JVM,つまりWinIEはUNIXが使うEUCが嫌いなのか、何故かそれをサポートしていません。
#そしてWinIEは最も多く使われています。
英文のみでエラーメッセージを表示する場合は文字コードを考える必要はありません。
画像などを投稿 した後の返り値にURL:と言う文字が初めにある場合、続く文字列をURLとして読み取ってその指定されたURLへジャンプする機能がつきました。これに より細かい動作をサーバー側が管理する事が容易になります。
JavaScript(LiveConnect)の紹介
JavaScriptが使用可能な場合幾つかのライブコネクトが可能です。
document.paintbbs.getColors() |
パレットの取得とパレットのセット。 |
document.paintbbs.pExit() |
投稿ボタンをJavaScriptから自動的に実行しま
す。 |
|
|
document.paintbbs.str_header |
この値にString値を入れることにより投稿時に拡張
ヘッダとして |
document.paintbbs.speed |
ビュワーのアニメーション再生時の速度を動的に変更させま
す。 |
|
|
function paintBBSCallback(value) |
PaintBBSは特定のタイミングでこの関数をコールし
ます。 |
しぃ堂 Shi-dow
(shi-chan webpage)