CloverPaint雑記

CloverPaintの解説・開発状況・内部仕様・利用法などについてつらつらと

PSD画像ファイル形式に対応

近日公開予定のClover Paint v1.16でPSD画像ファイル形式の入出力に対応しました。

(PSD対応はClover Paintのみの機能になります。)

ここでは新バージョンで実装された機能を紹介します。

利用において注意すべき点がいくつかあるので一応目を通しておくことをお勧めします。

 

まずPSD画像入力ですが、ファイルの選択に外部のファイラーアプリを利用します。

そのため有効なファイラーが存在しない場合PSD読み込みができません。現状「アストロファイルマネージャー」と「ESファイルエクスプローラー」で動作することを確認しています。もし「ツール→ファイル」「ファイル→入力→イメージ→PSD」を選択しても有効なアプリが見つからなかったと表示されたり、PSDファイルを選択できない場合は上記ファイラーをインストールして下さい。

 

読み込めるPSDファイルの情報は以下の通りです

・各チャンネル8ビット深度のRGB/RGBA画像(レイヤー)

・マスク付きの画像は不透明度にまとめて読み込み

・不透明度・不透明度保護・下のレイヤーでクリップ等のレイヤーフラグ

・レイヤー表示名

・Clover Paintで対応している合成モード

 

無視される、もしくは読み込めない情報の主なものは以下の通りです

・8ビット深度以外(16/32)のPSDファイル

・内部でZIP圧縮を利用している画像データ

・グループ情報

・レイヤーのマスク(不透明度に自動的に合成されます)

・画像以外のレイヤー(調整レイヤー等)

 

出力に関しては読み込めるデータ種類と同じものに対応しています。

グループ情報(フォルダ)やレイヤーのマスクに関しては、Clover Paint側でそれら機能が実装された際にPSDフォーマット側へも入出力できるようにする予定です。

PSD入出力に関しては以上です。

他にもいくつか変更点があります。

 

ネイティブ画像データの最適化処理を実装

 内部データフォーマットの記事でデータの最適化は現状やってないと書きましたが、このバージョンからPSD画像を読み込んだ時、および内部データ形式の画像を読み込んだ際(つまり、起動時の前回画像の読み込みとギャラリーからの画像読み込み)に最適化を行うようになりました。アニメ風のベタや透明部分の多い線画等ではファイルサイズはもちろん、メモリ内部でのサイズも数分の一になります。(もともとかなり大きいのですが)

 

キャンバス表示更新の遅延処理

何らかの修正があってキャンバス画像表示を更新しなければならない時、これまでは画面全体を更新したり、更新が終わるまで描画スレッドの処理を止めていた部分が多かったのですが、処理を大幅に見直して出来る限り停止しないようにする処理ルーチンを追加しました。

ただし、巨大画像等を読んだ直後でもカメラ移動等操作はできますが、画像全体が正しく表示されるまでに時間がかかるのは変わりません。パラパラと表示されるのが気持ち悪ければ「ギャラリー→オプション→キャンバス表示の遅延を利用」のチェックを外せば以前とほぼ同じ処理になります。

 

「下のレイヤーでクリップ」の仕様拡張

このバージョンまでの「下のレイヤーでクリップ」 は実際には「下のレイヤーまでの統合結果でクリップ」する処理になっていました。PSDファイルに対応するにあたり、Photoshopと同じ処理に合わせるため、これまでの「下のレイヤーでクリップ」は名前を改めて残し、新たにPhotoshop互換機能として「下のレイヤーでクリップ」を追加しました。場合により使い分けて下さい。ただし、Clover Paintの旧仕様のクリップを使った場合、PSDファイルに出力したときそのフラグは消えます。

 

(2013/03/05日追記)

「縮小制限拡張」オプションと「中央表示」コマンドの追加(v1.16.5)

このバージョンから大きな画像の読み込み・編集を考慮していますが、その際に縮小の下限である50%から、かなりストレスを感じるようになりました。そこで編集中の画像が画面に入る程度まで縮小できるようにする「縮小制限拡張」オプションを追加しました。(ディフォルトでONになっています)また、画面にちょうどぴったり収まるように中央表示する「表示設定→初期状態→中央表示」コマンドを追加しました。

 

 

今回のバージョンアップではPSDファイルに対応するということで、PC等の既存環境からのデータ移行が多いだろうと予想しました。そのため、これまで想定していなかったような、比較的大きな画像や、多数のレイヤーを含んだ画像を扱った時の動作で重くてストレスになっていた部分を見直して最適化しています。

自分自身では一枚の巨大画像を落書き程度に描くか、複数レイヤーもアイコンを作る際くらいにしか使用してなかったので、そのへんは無関心になっていました(汗)

今回の最適化で2GBクラスのメモリを持っている端末では結構大きな画像を複数レイヤーに分けて色塗りしている場合でも編集しやすくなったとは思いますが、まだメモリ関連の保護処理などは入れていないのでメモリが足りなくなると何も言わずに落ちます。

メモリ関連の保護処理が入るまでは、メモリ残量等を常にオーバーレイ表示してくれる常駐アプリ等を導入して、メモリが少なくなってきたら一度アプリを再起動する等の自己防衛策で切り抜けて下さい(何)