Shi-Painter help document


Menu
  1. しぃペインターとは? what's Shi-Painter?(Japanese)
  2. しぃ ペインターの補助機能紹介
  3. 使い方 (Japanese)
  4. Webに設置する方法(pooCGI andaotamaCGI) setup on thewebpage
  5. カスタマイズ customize
  6. 確認されている問題点とその解決方法 trouble shooting(Japanese)
  7. 掲示板の作者への様々な情報(フォーマットやJPEG実装、拡張ヘッダ等に付いて) to cgi creater


著作権者名
Copyright
(c)2000-2004 しぃちゃん
(c)2000-2004 shi-chan
ソフトウウェア名
Softwere name
お絵かきしぃペインター
Oekaki Shi-Painter
動作環境
System requirements
Java1.*が使うことの出来るブラウザ(IEやネッ トスケープ等)
Macでも当然使用可能ですが、古いネットスケープをご利用の方は
上手く動作しない可能性もあります。この場合最新のブラウザとMRJという
Java仮想マシンをインストールして下さい。

IEの方が融通が利きますのでNetscapeにあわせて作成されています。
IE5以降は必ず動きます。NetScape4.7以降も大丈夫です。
Macの方はプラグインで動くブラウザを使用して下さい(IEやネスケの最新版等)
run platform of Java(IE or netscapeor and more)
ファイル内容
(アップデート版のみ)
Into archive
(Update files only)
spainter.jar アプレットです。 バイナリファイルです。
spainter.html spainter_std.html 表示用HTMLです。
Readme_Shichan.html このドキュメントです。
spainter.jar Applet file
spainter.html spainter_std.html HTML for Applet
Readme_Shichan.html document of this self

使用許諾について
Use permission

このアプレットは個人法人に関わらずフリーです。
しかしどのような損失も作者は関知しない事にご注意下さい。

しぃペインター自体を商売とする利用(貸し出しや設置代行等)はライセンスを取得していただく 必要があります。外部へ貸し出し等を行う場合は無料やサブコンテンツであっても必ずライセンスを取得していただく必要があります。ライセン スが必要な運営を行う場合は作者から許可を得ない限り運営を開始してはいけません。
詳しくはこ ちらをご覧下さい。

CGIが同梱されている場合、そちらの仕様許諾に関してはCGI作者のヘルプをご覧下さい。

テクスチャー画像等のリソースはしぃちゃん製では無いツールでの利用は不許可とします。
 

配布、改変条 件
Distribution and
modification condition
改造、作成したCGI HTML等を付け加えたアーカイブの配布を許可します。
ただしReadMe_Shichan.htmlを変更したり、外さないようにして下さい。
res_**.txtファイルとres_**.zipの変更は許可されています。
アプレットの一部、若しくは全てのコードの改造、再利用は不許可とします。
アプレットの外に出ているclassファイルも同様です。
Javaのclassファイルへのリバースエンジニアリングは禁止されています。
商用利用時の詳細は此 方をご覧下さい。

The reverse engineering of an applet is forbidden.
The distribution of the archive whichadds CGI and HTML and more.
which are remodeled and made is permitted.
However please don't change or remove ReadMe_Shichan.html
保証/免責
Use permission
このソフトに対して何らかの保証を求めることは出来ませ ん。
使用する場合はすべて個人の責任において御利用下さい。
万が一何らかの損失が出たとしても作者に責任は無い物とします。
Those who manufacture it make it to the thing not concerned at all.
It is not responsible for the author.
その他
etc
フリーソフトではありますが著作権を放棄したわけではあ りません。
この著作物は日本国憲法により保護されています。
Although it was free software copyright was not necessarily abandoned.
This work is protected by the Constitution of Japan.
連絡先
contact to shi-cyan
質問は出来る限り質問専用掲示板にてお願いします。
Please attention,shi-chan have so poor English.--;;;


HomePage http://shichan.jp

 
1 しぃペインターとは?

しぃペインターとは絵を描く機能を持ち、CGIに画像データ(フォーマットはJpegとPngの自動切換え)を送信する事が出来るアプレットの名前です。 (CGIは別の名前が付いている場合があります)またサムネイルとして描き手順のアニメーションを送信させ、それを再生させる機能もしぃペインターは持っ ています。このアプレットは単独ではあまり役に立ちません。何らかのサーバーシステム (CGI等)が必要になります。

しぃペインターは次の事を基本的に念頭に置き作成されています。

  1. 初心者も何とか使え、上級者はそれなりに程度満足する機能。
  2. 短時間でそれなりの絵を作成することが出来るインターフェース。
  3. 高速な処理速度。
  4. 前世代のツール、PaintBBSのインターフェースに似せたイ ンターフェースを用意。(インターフェースは複数搭載可能
  5. PaintChatVersion3との互換性。描写機能とイン ターフェース部分をPaintChatと共有する事により開発を容易にしています。また利点も数多くあります。
  6. Javaは今日全ての環境で動くとはいえなくなっていますが、出 来る限り多くの環境での動作を可能にする為の工夫がされています。例えばWinとMacでは描写エンジンの部分が違う動きをします。
  7. 他国言語に完全対応。res_**.txt(**にはISO言語 識別コード)を用意するだけです。日本語はres_ja.txtで英語はres_en.txt。デフォルトはres.txtです。
しぃペインターはお絵か き掲示板だけではなく、簡単な画像であればウェブだけで生成を完結出来る様にする目的の為に生成されました。例えばウェブ日記にこのツールを組み込めば簡 単にイラストを載せられる様になるでしょう。また市販のツールはインターフェースが固定されておりますが、しぃペインターはインターフェースの選択が可能 です。その為PaintBBS以上にユーザーの幅が広がるのではないかと期待出来ます。

初心者の為にもしぃちゃんの絵を描いた経験で得たある程度的を得た自動処理がある為、ある程度の絵を描くには最適です。例えばわざわざJPEGとPNGの どちらで保存するか等、煩わしい選択も全て自動です。

CGIはしぃちゃんから提供する予定はありません。PaintBBSの経験からこの部分はよりスクリプト処理に強い作者に用意して貰う事により、より強力 なツールと多様化の利点が得られると言う結論が得られたからです。

2 PaintBBSの優れた(そして現時点ではPaintBBS固有の)補助機能の紹介
  1. しぃペイン ターの生成する画像
  2. ミスに よるエディット終了時の編集画像復旧機能
  3. 書 き手順をアニメーション表示させる機能
  4. セ キュリティーに関すること
  5. 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以上に細かいカスタマイズが可能
PaintBBSではエンピツ等のツールは固定され ていましたが、しぃペインターは外部からペン定義ファイルを読み込む形の為、細かくカスタマイズする事が可能です。さらにペン先やテクスチャ等殆どの部分 が置き換え可能になっています。インターフェースも複数用意されており、より多くのユーザーからの利用が期待できます。

2 使い方
非常に多機能で且つ複数のインターフェースが用意されている都合上、しぃちゃん自身が使い方を書く事 が困難になっています。それ程複雑な機能は搭載されておりませんので色々触ってみてください。ヒントとして色々な場所を右クリックすると様々な特殊機能が 活用可能になります。使い方はしぃツールの使い方を紹介するサイトを利用する事を強くお勧めいたします。



3 配布方法
  1. 新 規に設置する場合(New construction(aotamaCGIand more))
  2. バー ジョンアップについて(about versionup)
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に変更する値を記載。設定は現在以下の通り。
  1. カラーの変更等 のデフォルトで十分だが変更が可能な設定。
  2. キャンバスのサ イズ変更やセキュリティーに関する設定等、重要ではあるがシンプルな設定。
  3. JPEG PNGの指定やCGIの指定等の非常に重要だが掲示板がサポートしていなかったり難しかったりする設定。

カラーの変更等のデフォルトで十分だが変更が可能な設定。
image_bkcolor painting color on the backgroundofcanvas
キャンバスの背景色

image_bk painting tile image(jpeg or gif).on theapplet backgroung
アプレットの背景のイメージ(タイル張り表示)

layer_count default count of layers
 レイヤー数の初期値 デフォルトは2

undosize of undo(default size is 90)
アンドゥの回数。(デフォルトは90回。)
アンドゥの回数指定ですが、この値にきっちり収まるものではなく、値は多少前後しま す。
回数はundo_in_mgの倍数に収まる形となります。

undo_in_mg 
アンドゥを幾つにまとめて保存しておくか。(デフォルトで15)
この値を増やすとメモリの節約が出来るかわりにレスポンスが多少鈍くなります。
減らすとその逆です。メモリはundo/undo_in_mg分消費します。
アンドゥの回数以上を指した場合、メモリの消費はキャンバス1枚分になります。

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_button colors for buttons(tool bar)
ボタンの色(ツールバー)

tool_color_button2colors for buttons(toolbar)
ボタンの色(ツールバー)

tool_color_textcolor for text(toolbar)
テキストの色(ツールバー)

tool_color_bar color for the value change bar(toolbar)
変更バーの色(ツールバー)

tool_color_framecolor for buttons frame(toolbar)
枠の色(ツールバー)

color_1〜12 color_1~12 for palette colors
パレットのカラー

cursor_1〜12 customize cursors
カーソルカスタマイズ。ファイル名は x16xy16y.gifと言った感じに記述する事により基点の設定が出来る。


以 下追加されたカラー。

<!--プロの起動時に出現するメニューに関する設定-->
<param name=pro_menu_color_text value="#FFFFFF">
<param name=pro_menu_color_off value="#222233">
<param name=pro_menu_color_off_hl value="#333344">
<param name=pro_menu_color_off_dk value="0">
<param name=pro_menu_color_on value="#ff0000">
<param name=pro_menu_color_on_hl value="#ff8888">
<param name=pro_menu_color_on_dk value="#660000">

<!--初期に通常上部に着いている(設定により下にも動く)の設定-->
<param name=bar_color_bk value="#00ffff">
<param name=bar_color_frame value="#ff0000">
<param name=bar_color_off value="#ffffff">
<param name=bar_color_off_hl value="#ffffff">
<param name=bar_color_off_dk value="#888888">
<param name=bar_color_on value="#aaaaaa">
<param name=bar_color_on_hl value="#aaaaaa">
<param name=bar_color_on_dk value="#aaaaaa">
<param name=bar_color_text value="0xff">

<!--ウインドウ関係の設定-->
<param name="window_color_text" value="#ff0000">
<param name="window_color_frame" value="#ffff00">
<param name="window_color_bk" value="#000000">
<param name="window_color_bar" value="#777777">
<param name="window_color_bar_hl" value="#888888">
<param name="window_color_bar_text" value="#000000">

<!--確認ウインドウの設定-->
<param name="dlg_color_bk" value="#ccccff">
<param name="dlg_color_text" value="0">

<!--アプレットの背景の設定-->
<param name=color_bk value="#ccccff">
<param name=color_bk2 value="#f0f0f0">

<!--レイヤーのメーターカラーの設定-->
<param name=l_m_color value="#ffffff">
<param name=l_m_color_text value="#0000ff">


キャンバスのサイズ変更等、重要ではあるがシンプルな設定。(掲示板によっては間接的に変更する必要がある)
image_width width of canvas
キャンバスの幅。

image_height height of canvas
キャンバスの高さ。

image_canvas load from image_canvas and write to canvas.
指定されたイメージを読み込み、キャンバスに書き込みます。
確実に読み込めるのはjpeg gifとPaintBBSのネイティブなデータであるpchファイルです。
拡張子を必ずフォーマットのものと同じにする必要があります。
PCHファイルはレイヤーやアンドゥアニメデータ等の情報を全て復元します。

PCHファイルの拡張子をどうしても変更したい場合はパラメータpch_fileに設定して読み込ませる事を
お奨めいたします。
読み込める画像はJavaに依存します。例えばPNGはSunJVMがサポートしておりMSJVMはサポートされていません。BMPはこの逆となります。

animation_max length of data for animaion(KByte. default value is 0)
アニメーションデーターの最大値をKByte単位で指定します。
大体の目安でこの値に制限する為、多少前後します。
0で制限無し。

pch_file
通常モードのときに指定した場合、指定されたPaintChatAnimationファイルを
キャンバスに書き込みます。(バッファ上で書き込まれる為アニメーションは見る事が出来ません。)
pchファイルである事を前提にして読み込みますのでJPEG等のイメージを読み込む場合は
image_canvasの方に指定して下さい。
PCHファイルはレイヤーやアンドゥアニメデータ等の情報を全て復元します。

popup
ポップアップ表示とビュー表示を両方使えますがそれをポップアップに固定します。
安定性はありますので選択出るに越した事はありませんが、通常は選択する必要はありません。

popup_parent
ポップアップ表示を親ウインドウにするかサブウインドウにするかを決めます。
親ウインドウはアイコン化等が出来ますが、ブラウザの後ろに隠れます。
サブウインドウはブラウザの後ろに隠れませんがアイコン化ボタン等は付いていません。
Javaの仕様によりこの二つしか選択肢は無い為、都合の良い方をユーザーに選んでもらう形になります。
この設定が記述されている場合は窓ボタンを押した時の確認が省略されます。

security_click
When transmitting at the time of belowthe writingof the number of times of fixed
a certain action is started to URL specified to be security_url.

一定回数の書き込み以下の時に送信を行った場合 security_urlに指定された
URLへ何らかのアクションを起こします。アンドゥしたデータもカウントされていますので多めに
設定して下さい。健全な運用の為にもテスト運用を終え、公開する時に
是非60回以上の設定変更を行って下さい。

security_timer When timein as action to security_url.(Unit is section)
一定時間以内に送信した場合、セキュリティー違反を排出します。
秒単位です。これは確認ウインドウが出ている時もカウントされますので大きめに設定しても
良いかと思います。健全な運用の為にもテスト後、40秒以上の設定変更を行って下さい。

経験上3分以内に送られるデータの殆どは荒らし目的かテスト投稿の為に送信するデータだと判明しています。
またクリックカウントより高い効果があるようです。

security_url URLusedwhenany conflicts with security
セキュリティー違反が排出されると、ここに指定されたURLにジャンプ、もしくはurl_saveの替わりに使用されます。
security_post="false"の時はここに指定されたURLへジャンプします。逆はurl_saveの替わりです。
何処を指定していいか良く解らない場合は警視庁等の公的機関を指定して下さい。
自分のページや掲示板のトップ等には間違っても指定しないほうがいいです。
クッキー等を併用する事により、より堅固な物になると思います。

security_postAnimageissent when security istouched. true or false
security_urlが指定されたURLへ画像データを送信するのか、それとも指定された
URLへジャンプするかを選択出来ます。trueでurl_saveの替わりに使用され、
falseで何も送信せずsecurity_urlに指定されたURLへジャンプします。この機能に対応していない
CGIの場合はfalseを記述する事をお勧めします。

send_advance UseadvancedURLConnection. trueor false
Javaの標準URLConnectionを使用せず環境に依存しない独自の方法でデータを投稿します。
この機能を使用時は送信状況を細かく表示する事が出来ます。また環境に依存しません。

投稿に失敗した場合標準のURLConnectionで投稿しますので通常falseを選択する必要はありません。
標準URLConnectionは環境に依存しさらに送信状況は細かく表示されません(JavaURLで送信中と出るだけです)
この設定が無い場合標準でtrueが選択されます。

dir_resource
res.txt等のリソースがどこにあるのかを指定。最後に&、?、=がついた場合はファイル名と直接連結されます。

tools
インターフェースの選択を指定します。
smp(simpleでも可能)を指定すると通常仕様が選択され、stdを選択するとプロ仕様が選択されます。
プロ仕様は操作が難しい為、片方に固定したい場合はsmp(通常仕様)を奨励します。

圧縮ファイル名の設定
tt.zipやres.zipと言う設定を変更する事により必要なリソースの位置をデフォルト位置から変更する事が可能になります。この設定は dir_resourceを無視します。

JPEG PNGのフォーマット指定等、非常に重要だが掲示板がサポートしていなかったり難しかったりする設定。
image_jpeg Need JPEG Jpeg format(true or false)
image_sizeが指定されたデータより大きくなる場合、PNGではなく
JPEGにしてデータ量の減少を試みます。必ずJPEGにすると言う設定ではありません。

image_interlaceNeed interlace format(PNG only. True or false)
PNG画像をインターレース形式で送信します。PNGであればサムネイルも同様のフォーマットになります。
(画像が徐々に現れるフォーマットです。)デフォルトはfalse。

image_size
when this size is exceeded the coloris decreased.(unit is KByte)

画像のデータがこの画像より大きくなる場合、減色処理、若しくは
image_jpegがtrueの場合JPEGに変換します。1を指定した場合必ず
摘要され、0や記述無しの場合は必ず適用されません。
あまり小さくした場合、PNGで最適な圧縮がされるデータもJPEG化されます。
逆に大きくなりかねませんので、キャンバスの大きさにもよりますが、最低40は
指定する様にして下さい。60KByte奨励。

compress_level compresslevel(JPEG and PNG)
PNGの減色率とJPEGの圧縮率。この値が高ければ高い程
圧縮率が高まります。デフォルト、奨励値は15です。
この値を下げた時にはimage_sizeを高くして下さい。
そうしないとデータ量が大きなイメージが出来上がる可能性があります。
また逆に圧縮率を上げた時はimage_sizeを下げる事によりデータ量の減少が
期待出来ます。

url_save place send data of image(CGI or etc.)
保存を担当するCGI(若しくはそれに相当するもの)

url_exit after fineshed jump to URL.
保存成功時にジャンプするURL

url_target target of frame.
保存成功時にジャンプするURLを指定するターゲット
(複数投稿は出来ない仕様になっていますのでご注意下さい)

poopoo CGI format and to synchronize withtrue.
保存フォーマットを既に存在する絵掲示板のデータと互換にする
これを適用した場合PaintBBSの拡張機能は適用されません。
(アプレットとoekaki.htmlを差し替えるだけでも動作すると言う意味です。)
例外としてサムネイルを設定した場合は送信するようにしておきました。
ただしpoo互換CGIでサムネイルを送信した場合、画像が壊れますので御注意下さい。

send_header Valueis transmitted at the beginning of first transmitting data.
send_language encode of header and error responce
データを送信する時、POSTデータの一番初めに指定されたフラグを初めに送信します。
データのエンコードの種類

データは指定された言語へエンコードを施し送られます。languageになにも指定していない場合は
utf8が選択されます。日本語を使いたい場合はsjis jis utf8のいずれかを記述して下さい。
send_languageはエラーレスポンスの時にも使われます。
拡張ヘッダは個々のCGI作者に開放している物でJPEGフラグが追加される可能性がある以外に
デフォルト値等は存在しません。

send_header_image_type true or false
JPEGかPNGかを調べる為、自動的に拡張ヘッダ内の先頭にイメージの種類を注入します。
PNGの時はimage_type=png&でJPEGの時はimage_type=jpeg&と言う文字列が追加されます。
拡張ヘッダを使用しない場合は無効です。


send_header_timer true or false
描写開始から終了までのミリ秒単位のカウントを拡張ヘッダの先頭に追加します。
セキュリティー系はこれを参照しています。

send_header_count true or false
描写工程を
カウントした数 値(正確な数値ではない)を拡張ヘッダの先頭に追加します。
セキュリティー系はこれを参照しています。


send_uencode true or false
拡張ヘッダをURLEncodeして送信するかどうか。デフォルトではfalse。

thumbnail_type
サムネイルのタイプ。png jpeg animationが選択可能です。デフォルトはpng。
animationを選択した場合PaintChatAnimationファイルと全く同様の物が
サムネイルの部分に送信されます。 PaintBBSには再生機能がありますので
掲示板が対応さえしていれば完成までの手順を表示させる事も可能です。

thumbnail_type2
二つ目のサムネイルを送信したい場合はこのパラメータにthumbnail_typeと
同じ様に種類を書き込む必要があります。

thumbnail_compress_level
サムネイルの圧縮Levelを指定。JPEGサムネイルのみ影響を受けます。


thumbnail_width
thumbnail_height
width and height of thumbnail
送信するサムネイル画像の横幅と縦幅です。%でも指定可能。
二つサムネイルが指定されている場合は両方がこの大きさになります。
両方画像と同じ大きさだったり(両方100%等)両方設定が無い場合はサムネイルを送信しません。
例外としてサムネイルのタイプを明記している場合は必ず送信されます。

header_magic
送信時一番初めに送られてくる文字の設定。PaintBBSは'P'でしぃペインターは'S'です。
複数文字を指定する事も可能です。

 
5 確認されている問題とその解決方法
  1. ア プレットをバージョンアップしてもブラウザが認識せずバージョンが変わらない場合
  2. アー カイブにアプレットファイルspainter.jarが存在しない
  3. 投 稿が出来ない場合
  4. ア プレットが表示されない時(ステータスバーにpbbs.PaintBBSnotfoundとでている時
  5. 色 数が増え、ファイルが大きくなりBBSの設置が難しい場合
  1. アプレットをバージョンアップしてもブラウザが認識せずバージョンが変わらない場合

    ブラウザが新しいアプレットを認識せずキャッシュから
    アプレットを取得する為このような状態が起こります。
    とくにローカルで試しに開いて見た時等は良く前のバージョンのままになっています。
    解決方法としてはアプレットのファイル名を変更し、
    アプレットタグのarchive属性に書き込まれているファイル名を変更して下さい。


  2. アーカイブにアプレットファイルspainter.jarが存在しない時

    eoと言う解凍ソフトを使用している場合、「徹底解凍しますか?」と聞かれますが、
    これを許可してしまいますとアプレットファイルまで解凍されてしまいます。
    ですので徹底解凍の選択は「いいえ」を選択するようにしてください。
    基本的に徹底解凍をすると正常に動作しないソフトがある可能性がある事を
    覚えておくと良いかもしれません。


  3. 投稿が出来ない場合

    サーバーが重い時、もしくは指定されたCGIが存在しない場合や
    CGIの設定を間違えている場合の時に発生します。
    投稿に失敗したとしても描いた絵は残っていますので、
    しばらく待った後再度投稿する事をお勧めします。
    パラメータのurl_saveの設定先にCGIがなかったりアクセス出来ない場合は成功しません。
    またCGIと違う場所のWeb領域にspainter.jarが置かれている場合は送信が出来なくなる可能性があります。
    値をhttp://から始まる絶対URLで指定すると良い場合もあります。
    細かい設定は個々のCGI作者にお尋ね下さい。


  4. アプレットが表示されない時(ステータスバーに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.*環境の時日本語が入ったローカルディレクトリで試した場合
    アプレットは読み込まれませんので御注意下さい。


  5. 色数が増え、ファイルが大きくなり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)
  1. POSTで送信されるイメージ データと拡張ヘッダ
  2. JPEGを実装させる為のヒン ト
  3. 書き手順 (アニメーション)の表示を実装させる為のヒント
  4. 投稿時のエ ラー処理に付いて
  5. 投稿後の返り値を利 用したページ移動の動的変更
  6. JavaScript(LiveConnect) の紹介


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
thumbnail_type2
値が"jpeg"である場合はサムネイルは JPEGフォーマットになります。
thumbnail_compress_level
サムネイルの圧縮率
の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
thumbnail_type2
"animation" である場合はサムネイル部分がアニメーションデータになります。
この時サムネイルの幅と高さは無視され、確実に送信されます。
pch_file アニメーションファイ ルを示すURL。ビュワー時は再生されるアニメファイルの位置で
お絵かきモードの時はキャンバスに読み込まれます。image_canvasに近いですが
アニメファイルが対象であると言う以外にアニメデータとアンドゥデータも読み込まれ、
ほぼ完全に再現される点が違います。
animation_max アニメーションデー ターの最大値をKByte単位で指定します。
大体の目安でこの値に制限する為、多少前後します。
0で制限無し

オプションに
<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.setColors(String)
パレットの取得とパレットのセット。
カラーは改行で区切られた#RRGGBBの16進です。
#を0xに変更しても大丈夫です。
document.paintbbs.pExit() 投稿ボタンをJavaScriptから自動的に実行しま す。
主に送信ボタンを自作する時に使われます。


document.paintbbs.str_header この値にString値を入れることにより投稿時に拡張 ヘッダとして
送信されます。param値より優先されます。


function paintBBSCallback(value) PaintBBSは特定のタイミングでこの関数をコール します。
どの様なタイミングかはString値であるvalueを調べる事により判別が可能です。

アプレットを開始した時。valueは"start"。

送信ボタンを押した時。valueは"check"。
"false" 0 をreturnで返すとボタンを押した事が無効化されます。
"true" 1 をreturnで返すとPaintBBSの標準確認ウインドウを出さずに送信を
開始します。

送信直前。valueは"header"。
returnで有効なString値を返した時場合拡張ヘッダとして送信されます。
この値はstr_headerに直接入れた値やsend_headerパラメータより優先されます。

ライブコネクトを使用時返す値は必ずStringオブジェクトを宣言してから
返すようにして下さい。(Netscape4.*対策)

res=new String("this is test");
return res;

拡張ヘッダの優先度は高い純から
コールバック"header"のレス
str_headerに直接代入した値
paramタグのsend_headerで指定された値
です。

 


しぃ堂 Shi-dow
(shi-chan webpage)