PaintBBS help document

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

著作権者名
Copyright
(c)2000-2003 しぃちゃん
(c)2000-2003 shi-chan

ソフトウウェア名
Softwere name
お絵かきしぃ掲示板PaintBBS
Oekaki shi-BBS PaintBBS

動作環境
System requirements
Java1.*が使うことの出来るブラウザ(IEやネットスケープ等)
Macでも当然使用可能ですが、古いネットスケープをご利用の方は
上手く動作しない可能性もあります。この場合最新のブラウザとMRJという
Java仮想マシンをインストールして下さい。

IEの方が融通が利きますのでNetscapeにあわせて作成されています。
IE5以降は必ず動きます。NetScape4.7以降も大丈夫です。
Macの方はプラグインで動くブラウザを使用して下さい(IEやネスケの最新版等)
run platform of Java(IE or netscapeor and more)

バージョン
Version
2.11

ファイル内容
(アップデート版のみ)
Into archive
(Update files only)
PainttBBS.jar アプレットです。
oekaki.html 公開用HTMLです。
Readme_Shicyan.html このドキュメントです。

PaintBBS.jar Applet file
oekaki.html HTML for Applet
Readme_Shicyan.html document of this self

使用許諾について
Use permission
このアプレットはフリーソフトです。
個人、商用目的に関わらず自由にお使い下さい。
商用での使用時、どのような損失も作者は関知しない事にご注意下さい。

但しPaintBBS自体を商売とする利用(レンタルサイト等)はライセンスを
取得していただく必要があります。外部へ貸し出し等を行う場合は無料であれ
必ずライセンスを取得していただく必要があります。


CGIが同梱されている場合、そちらの仕様許諾に関しては
CGI作者のヘルプ をご覧下さい。
this program is free soft.
配布、改変条件
Distribution and
modification condition

改造、作成したCGI,HTML等を付け加えたアーカイブの配布を許可します。
ただしReadMe_Shicyan.htmlを変更したり、外さないようにして下さい。
アプレットの一部、若しくは全てのコードの改造、再利用は不許可とします。
リバースエンジニアリングは禁止されています。
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_Shicyan.html


保証/免責
Use permission
このソフトに対して何らかの保証を求めることは出来ません。
使用する場合はすべて個人の責任において御利用下さい。
万が一何らかの損失が出たとしても作者に責任は無い物とします。
Those who manufacture it make it to the thing not concerned at all.
It is not responsible for the author.

その他
etc
フリーソフトではありますが著作権を放棄したわけではありません。
この著作物は日本国憲法により保護されています。
連絡先
contact to shi-cyan
質問は出来る限り質問専用掲示板にてお願いします。
attention, shi-chan is so poor in English.--;;;


E-Mail syicyan@yahoo.co.jp
HomePage http://www.gt.sakura.ne.jp/%7Eocosama/

質問掲示板supportBBS
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/shirato/Child_Tree/cbbs.cgi
 
1 PaintBBSとは?

PaintBBSとは絵を描く機能を持ち、CGIに画像データ(フォーマットはJpegとPngの自動切換え)を送信する
事が出来るアプレットの名前です。(CGIは別の名前が付いている場合があります)

またサムネイルとして描き手順のアニメーションを送信させ、それを再生させる機能も
PaintBBSは持っています。

pooさんのCGIと互換性がありますのでアプレットとoekaki.html(に相当するHTML)を
置き換えるだけで継続利用が可能です。また共存も容易に出来ます。

掲示板の部分は他の方が作成したものを使用します。
PaintBBSはCGIを含めて公開する事を認めていますので、アーカイブ内に
pooCGI互換CGIが入っている場合もあります。

ダウンロードページ内にあるフルパッケージ版は藍珠CGIが付属されている物で
バージョンアップをしたい方や、藍珠CGI以外のpoo互換CGIを使用する場合は
アップデート版をDLする事をお勧めします。


PaintBBSは次の事を基本的に念頭に置き作成されています。
  1. 初心者にやさしく、上級者もある程度満足する機能。
  2. 短時間でそれなりの絵を作成することが出来るインターフェース。
    掲示板と言う性質上、時間に対する効率がとても重要だと考えた為です。
  3. 高速な処理速度。
  4. 既存のお絵かき掲示板環境を継続利用、もしくは共存が可能な形態。
    共存,設置に関するご質問はCGIの作者にお願いします。
  5. PaintChatとの互換性。
    描写機能とインターフェース部分をPaintChatと共有する事により
    開発を容易にしています。また利点も数多くあります。
  6. 全てのプラットフォームでの動作
    Windowと性質上、Macの利用者がとても多いのでWindowsとMacは最低限完全サポートします。
    ネットスケープでの利用も可能です。(Macのネスケは未確認です)
    (Macの場合MRJがインストールされている事が必要です。Apple社のHP上に置かれています。)
  7. 日本語以外に最低限英語のサポート。自動的に使用言語は選択されますので通常気にする必要はありません。
    この二つ以外は非サポートですが、パラメータの設定などにより対応可能にしたいと思います。

他の絵掲示板のように、フォトショップライクなハイレベルなペイントツールを目指しているわけではなく、
最高でも2時間以内で絵を完成させるまさしくお絵かきする為のツールを想定して作成されています。
その代りアプレットしか無い利点を大いに活用していますので、十分楽しめる物である筈です。

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

掲示板部分は製作していませんが、これはどちらかと言うと利点の方が大きいです。
まずしぃちゃんはお絵かきの部分だけに専念出来ますし、CGI作者はお絵かきは気にする事無く
作成出来、結果クオリティーの高い物に仕上がる筈です。
またCGI作者は比較的多いですので為選択肢が増えます。




2 PaintBBSの優れた(そして現時点ではPaintBBS固有の)補助機能の紹介

  1. PaintBBSの生成する画像
  2. ミスによるエディット終了時の編集画像復旧機能
  3. 書き手順をアニメーション表示させる機能
  4. セキュリティーに関すること

PaintBBSの生成する画像
PaintBBSの生成する画像はPNG,JPEG,PCH(フォトショのPSDに相当するもの)の
3つのフォーマットをサポートしています。
現在殆どの絵掲示板でPNG,JPEG両方をサポートされていますが、中身はかなり違います。

まずPNG付いてですが、多少生成に時間が掛かりますが
恐らく現在公開、利用されているどのJava系PNGエンコーダーよりもファイルの容量が小さくなる筈です。
(ファイルが大きいと50%程差が出る場合もあります)勿論完全な可逆式の画像です。
またimage_interlaceをtrueにする事によりインターレース表示対応の形式として送信可能です。

JPEGに関しては細かい圧縮率の変更が可能であり、最適なJPEGを生成される
筈です。こちらも設定を参照し自動的に最適な画像が生成されます。

PaintBBSはファイル容量を軽くする為にJPEGをサポートしている為ユーザーがフォーマットを
選ぶ事を通常許可していません。(掲示板からの設定で選択可能にはなります)

よって圧縮率の高いPNGと最適な圧縮率を模索するJPEGとを自動的に選択する機能により
生成されるファイルの大きさは同系等のシステムよりもかなり小さくなるはずです。
ただし掲示板がJPEGとPNGを分けて処理するようなシステムが必要になる為多少CGI作者に
しわ寄せが来ます(;_;)

生成する時間もCPUのスペックが低い場合で且つ全ての工程を通った画像、
つまり一番圧縮率の高いJPEGか減色されたPNG画像に付いては最悪10数秒かかります。

メモリの消費量はかなり低く押さえていますし、メモリを流用可能な形態をしていますので
時間は掛かりますがフリーズしたりする事はほぼありませんのでご安心下さい。


ミスによるエディット終了時の編集画像復旧機能
こちらも現時点ではPaintBBS固有の機能で何らかのミスにより編集中にページを移動してしまったり
ウインドウを消してしまったりした時、直ぐに編集ページを開きなおす事により
キャンバスに描かれた画像を復旧させる事が出来ます。

WindowのIEや簡易起動をONにしたネスケ6.1以降であれば
ウインドウを閉じても同じ画像の大きさの設定で編集ページに再度訪れれば
大抵は残っていますのでかなり心強いはずです。
(ネスケ4やMacIEの場合はブラウザのウインドウを全て閉じると復旧不能になります。)

但しアンドゥデータ等の細かい部分は復旧出来ません。

書き手順をアニメーションさせる機能

今までは静止画しか取り扱う事が出来ませんでしたが、PaintBBSではなんと編集中のデータを
そっくりそのままアニメーション表示させる事が可能です。これは書き手順を見せるだけではなく
動くアニメーションをも投稿可能なもしかしたら今後のお絵かき掲示板が変わるかも知れない程の
面白い機能です。
但し当然掲示板が対応していなければ使えません。(対応している掲示板は現在極少数です)

これはPaintChatの描写、通信システム上で動作するPaintBBS固有の機能で
恐らくは今後もしぃ絵掲示板しかこの様な事は出来ない筈です。

のらさんと共有しているデバッグ版では現在テスト運用を行っていますので
是非覗いてみて下さい。

Pooさんの掲示版でアニメーションを実装したい場合はあけびさんのウェッブサイト上で
解説されていますので、そちらを参考に改造をしてみて下さい。 あけびさんのサイトへ

CGIへの実装方法は此方をご覧下さい。
セキュリティーに関する事

PaintBBSはセキュリティーに関しても細心の注意を払っています。

投稿時のIPアドレスはプロキシーを無効化された生(若しくはそれに近い)IPです。
アドレスを隠しての荒らし目的の投稿はほぼ不可能です。

設定により変更可能ですが、一定時間以内に投稿されたり一定量しか書き込みが無かったりする
場合に投稿を事前に拒否する機能があります。

詳しくはしぃちゃんのホームページをご覧下さい。

2 使い方

ミスしてページを変えたりウインドウを消してしまったりした場合は落ちついて同じキャンバスの幅で
編集ページを開きなおしてみて下さい。大抵は残っています。
(MacIEやネスケ4.*の場合はブラウザのウインドウを全て閉じてしまったら復旧出来ません)


基本の動作(恐らくこれだけは覚えておいた方が良い機能)
<基本>
PaintBBSでは右クリック,ctrl+クリック,alt+クリックは同じ動作をします。
基本的に操作は一回のクリックか右クリックで動作が完了します。(ベジエやコピー使用時を除く)

<ツールバー>
ツールバーの殆どのボタンは複数回クリックして機能を切り替える事が出来ます。
右クリックで逆周り。パレットの色,マスクの色,一字保存ツールに現在の状態を登録は全て右クリックです。
逆にクリックでパレットの色と一時保存ツールに保存しておいた状態を取り出せます。

<キャンバス部分>
右クリックで色をスポイトします
ベジエやコピー等の処理の途中で右クリックを押すとリセットします。

特殊動作(使う必要は無いが慣れれば便利な機能)
<ツールバー>
値を変更するバーはドラッグ時バーの外に出した場合変化が緩やかになりますので
それを利用して細かく変更する事が出来ます。
パレットはShift+クリックで色をデフォルトの状態に戻します。

<キーボードのショートカット>
+で拡大-で縮小。
Ctrl+ZかCtrl+Uで元に戻す、Ctrl+Alt+ZかCtrl+Yでやり直し。
Escでコピーやベジエのリセット。(右クリックでも同じ)
スペースキーを押しながらキャンバスをドラッグするとスクロールの自由移動。
Ctrl+Alt+ドラッグで線の幅を変更。

<コピーツールの特殊な利用方法>
レイヤー間の移動は現時点ではコピーとレイヤー結合のみです。コピーでの移動方法は、
まず移動したいレイヤ上の長方形を選択後、移動させたいレイヤを選択後に通常のコピーの作業を
続けます。そうする事によりレイヤ間の移動が可能になります。

ツールバーのボタンと特殊な機能の簡単な説明
  • ペン先(通常ペン,水彩ペン,テキスト)
    メインのフリーライン系のペンとテキスト

  • ペン先2(トーン,ぼかし,他)
    特殊な効果を出すフリーライン系のペン

  • 図形(円や長方形)
    長方形や円等の図形

  • 特殊(コピーやレイヤー結合,反転等)
    コピーは一度選択後、ドラッグして移動、コピーさせるツールです。

  • マスクモード指定(通常,マスク,逆マスク)
    マスクで登録されている色を描写不可にします。逆マスクはその逆。
    通常でマスク無し。また右クリックでマスクカラーの変更が可能。

  • 消しゴム(消しペン,消し四角,全消し)
    透過レイヤー上を白で塗り潰した場合、下のレイヤーが見えなくなりますので
    上位レイヤーの線を消す時にはこのツールで消す様にして下さい。全消しはすべてを透過ピクセル化させるツールです。
    全けしを利用する場合はこのツールを選択後キャンバスをクリックでOK。
    消しゴムは独立した線の幅を持っています。

  • 描写方法の指定。(手書き,直線,ベジエ曲線)
    ペン先,描写機能指定ではありません。
    また適用されるのはフリーライン系のツールのみです。


  • カラーパレット郡
    クリックで色取得。右クリックで色の登録。Shift+クリックでデフォルト値。

  • RGBバーとalphaバー
    細かい色の変更と透過度の変更。Rは赤,Gは緑,Bは青,Aは透過度を指します。
    トーンはAlphaバーで値を変更する事で密度の変更が可能です。


  • 線幅変更ツール
    水彩ペンを選択時に線幅を変更した時、デフォルトの値がalpha値に代入されます。

  • 線一時保存ツール
    クリックでデータ取得。右クリックでデータの登録。(マスク値は登録しません)

  • レイヤーツール
    PaintBBSは透明なキャンバスを二枚重ねたような構造になっています。
    つまり主線を上に書き、色を下に描くと言う事も可能になるツールです。
    通常レイヤーと言う種類の物ですので鉛筆で描いたような線もキッチリ透過します。
    クリックでレイヤー入れ替え。右クリックで選択されているレイヤの表示、非表示切り替え。


投稿に関して:
絵が完成したら投稿ボタンで投稿します。
絵の投稿が成功した場合は指定されたURLへジャンプします。
失敗した場合は失敗したと報告するのみでどこにも飛びません。
単に重かっただけである場合、少し間を置いた後、再度投稿を試みて下さい。
この際二重で投稿される場合があるかもしれませんがそれは
WebサーバーかCGI側の処理ですのであしからず。


3 配布方法
  1. pooさんのCGIを使用する場合(When you usetheapplet(CGI) of poo)

  2. 新規に設置する場合(New construction(aotamaCGIand more))

  3. バージョンアップについて(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
アプレットの背景のイメージ(タイル張り表示)


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_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
パレットのカラー


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


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


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

PCHファイルの拡張子をどうしても変更したい場合はパラメータpch_fileに設定して読み込ませる事を
お奨めいたします。
WinIEはpngを読み込めません。MACやNetScape6の場合は読めると思います。


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を記述する事をお勧めします。


tool_advanceUse limitation of tool whichuses a lotof colors. true or false
色数が増えるツールの使用を制限します。trueで可falseで不可
JPEG対応により今後この設定はなくなる可能性があります。


tool_alphaUse alpha
アルファバーを変更できるかどうか。(トーンは変更できます)trueかfalse
JPEG対応により今後この設定はなくなる可能性があります。


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

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

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_uencode true or false
拡張ヘッダをURLEncodeして送信するかどうか。デフォルトではfalse。


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


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


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

 
5 確認されている問題とその解決方法
  1. アプレットをバージョンアップしてもブラウザが認識せずバージョンが変わらない場合

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

  3. 投稿が出来ない場合

  4. アプレットが表示されない時(ステータスバーにpbbs.PaintBBSnotfoundとでている時

  5. 色数が増え、ファイルが大きくなりBBSの設置が難しい場合



  1. アプレットをバージョンアップしてもブラウザが認識せずバージョンが変わらない場合

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


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

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


  3. 投稿が出来ない場合

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


  4. アプレットが表示されない時(ステータスバーにpbbs.PaintBBS not foundとでている時)

    これはPaintBBS.jarが見つからなかった時に起こります。
    解決方法としてhtmlファイルをテキストエディッタ等で開き、<applet>タグ内のarchive内に書かれている、
    PaintBBS.jarをhttp://から始まるURLに修正して下さい。

    例:PaintBBSがhttp://foo.com/PaintBBS.jarにある場合
    <applet archive="http://foo.com/PaintBBS.jar">

    これで駄目な場合はそもそもhtmlに書かれたurlにPaintBBS.jarが存在しない場合や
    その場所に置く事を許可されていない場合等です。

    ネットスケープ4.*環境の時,日本語が入ったローカルディレクトリで試した場合
    アプレットは読み込まれませんので御注意下さい。


  5. 色数が増え、ファイルが大きくなりBBSの設置が難しい場合

    色数や画像のサイズが増えますと画像データの大きさが大幅に増加します。
    その場合そのまま使用すると使い勝手が悪くなりますので次のどれかを
    採用するようにして下さい。

    JPEGに対応した掲示板を利用して下さい。

    PaintBBSは画像のサムネイルを生成し、送信する機能があります。
    サムネイルに対応したCGIを使用すれば画像が重くても大丈夫な筈です。

    データの量が指定された容量を越えた場合減色する機能を追加しました。
    色は余り劣化しませんが、グラデーションが若干少なくなります。
    かなり容量が減りますのでこれで十分ではないかと思います。
    <param name="image_size" value="65">
    これで65KByteを超えた場合減色すると言う意味です。

    水彩、ぼかし、焼き込み等の色数が大幅に増加するツールの使用を制限する
    パラメータをOFFにすることです。oekaki.html(に相当するHTML)のアプレットタグ内に
    <param name="tool_advance" value="false">
    と記入、もしくは編集することによりツールバーから取り除くことが出来ます。

    この設定を適用してもalpha値の変更は可能ですが、鉛筆等のツールは
    色数が増えにくいツールですので特に気にする必要は無いと思います。
    どうしてもきになる場合は<param name="tool_alpha" value="false">
    も追加して下さい。
6 掲示板の作者への様々な情報(フォーマットやJPEG実装、拡張ヘッダ等に付いて)
this is the format of POST Data

P(1Byte Character)
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. JavaScript(LiveConnect)の紹介


POSTで送信されるイメージデータと拡張ヘッダ

CGIに送信するデータの説明をします。
send_headerはアプレットのparamタグで記述した場合送信されます。
send_headerは付け足しても\rを使用しない限りpooCGIと互換性がなくなることはありません。

P(1Byteの識別文字)
拡張ヘッダ長(必ず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で圧縮レベルも変更可能。

現バージョンは送信後PaintBBはデータを受け取りませんが
近い将来退室URLになる可能性もあります。



JPEGを実装させる為のヒント

動作の説明
PaintBBSはサーバーの負担を減らすために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フォーマットになります。
の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があるので下げるのはあまり意味がないかも)


書き手順(アニメーション)の表示を実装させる為のヒント

動作の説明

PaintBBSはPaintChatと姉妹関係にあり全く同様の通信、描写規格を持っています。
その為PaintChatで生成可能なアニメーションファイルをPaintBBSでも生成が可能になっています。
このデータはPaintChatが生成する*.pchファイルと全く同様の物です。

そしてPaintBBS1.48からサムネイルとしてこの書き手順を表示させるアニメーションデータを
送信する機能とそれを表示する簡易ビュワーが搭載されました。
このファイルは全く同じコードから生成される為PaintChatViewerでも当然再生が可能です。

このアニメーションデータはアンドゥされたデータを保存する事はありません。
画像ファイルのように急にデータ量が大きくなるような事は無く、時間に比例して緩やかに
データが大きくなっていきます。数時間掛けても100KByte程ですので余裕がないサーバー以外は
簡単に実装できる事でしょう。アニメーションファイルを直接Javaアプレットが読み込む為、CGIとは無関係に
表示が可能です。このシステムの導入によりサーバーの負担を増加させるような類の物ではありません。
サムネイルと同様の扱いになっていますのであまりに大きなデータが送られてきた場合は
拒否させる事も苦痛では無い選択肢になる筈です。

実装のヒント
アニメーションを保存したい人としたくないははっきりと分かれていますので選択可能な形にする事を奨励します。

アニメーション表示の実装をさせるためのヒント
thumbnail_type
thumbnail_type2
"animation"である場合はサムネイル部分がアニメーションデータになります。
この時サムネイルの幅と高さは無視され、確実に送信されます。

viewer

このオプションをtrueにした時PaintBBSは簡易ビュワー化します。

pch_file
アニメーションファイルを示すURL。ビュワー時は再生されるアニメファイルの位置で
お絵かきモードの時はキャンバスに読み込まれます。image_canvasに近いですが
アニメファイルが対象であると言う以外にアニメデータとアンドゥデータも読み込まれ、
ほぼ完全に再現される点が違います。
speed
アニメーションの速度。(実際は1000ミリ秒単位の停止時間設定)簡易ビュワー専用のオプション。
animation_max
アニメーションデーターの最大値をKByte単位で指定します。
大体の目安でこの値に制限する為、多少前後します。
0で制限無し

オプションに
<param name="thumbnail_type" value="animation">
と入れる事によりサムネイル部分にアニメーションファイルが送信されます。
通常のサムネイルと併用して使いたい場合はthumbnail_type2もつかって下さい。

また
<param name="viewer" value="true">
<param name="pch_file" value="sample.pch(保存したアニメデータのURL)">
<param name="speed" value="10">
と設定する事によりビュワーとして再生させる事が可能です。
簡易ビュワーをしている時はお絵かきツールとして動作する事はありません。


PaintBBS内臓のビュワーはファイルサイズの問題からPaintChatViewerLightの様な
外部操作等の機能を入れていませんので細かいツールを作成する時は
ビュワーを利用して下さい。ビュワーは改造(解体、改良や付け加え等)さえしなければ
再配布可能ですので必要であれば配布用ファイル郡にビュワーを足してもOKです。



投稿時のエラー処理に付いて
画像を投稿時、ロックに失敗したり画像が大きすぎた場合、
時間を置いて投稿、また大きすぎる画像を編集しなおすチャンスを獲得させるため
例外的な処理を行う機能があります。そしてPaintBBSはエラーの詳細を文章で表示させる事が出来ます。
安定したエラー処理を行っておりますので少しでも失敗しそうであれば構わず返してしまっても
大丈夫だと思います。

スクリプトがエラー表示を返したい場合、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は最も多く使われています。
英文のみでエラーメッセージを表示する場合は文字コードを考える必要はありません。


JavaScript(LiveConnect)の紹介

JavaScriptが使用可能な場合幾つかのライブコネクトが可能です。

document.paintbbs.getColors()
document.paintbbs.setColors(String)
パレットの取得とパレットのセット。
カラーは改行で区切られた#RRGGBBの16進です。
#を0xに変更しても大丈夫です。

document.paintbbs.pExit()
投稿ボタンをJavaScriptから自動的に実行します。
主に送信ボタンを自作する時に使われます。


document.paintbbs.str_header
この値にString値を入れることにより投稿時に拡張ヘッダとして
送信されます。param値より優先されます。
document.paintbbs.speed
ビュワーのアニメーション再生時の速度を動的に変更させます。
通常のお絵かきモードの時はこの値は使用されません。


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で指定された値
です。














Javaなお子様的HP
(shi-chan webpage)