カテゴリー: メモ
投稿者: Mocchi

PHPのGDライブラリ・バインディングでは、BMPフォーマット(正式にはMicrosoft Windows Bitmap Image)を扱うことが出来ません。

BMPフォーマットは、現在はMicrosoft社が仕様を公開しています。元々はIBM社と共同で策定したフォーマットでしたが、OS/2とWindowsの2つのオペレーティングシステムで異なるフォーマットが使われだし、OS/2が下火になった今、Microsoft社のフォーマットが主流になっているといった感じです。

Bitmaps (Windows) @ msdn.microsoft.com

» 続きを読む

カテゴリー: メモ
投稿者: Mocchi

Mediumクラスのコンストラクタで、プロパティ$medium->mimeにファイルのMIME型を設定するように作ってあります。

MIME型の検出は以下のプロセスで実装してあります。

» 続きを読む

カテゴリー: メモ
投稿者: Mocchi

JPEGやTIFFには、カラーマネジメントのためのプロファイルが埋め込まれることがあります。

カメラやスキャナなどでは、ハードウェアが取得できる色の幅が、装置によって決まっています。この色の幅は「色空間(カラースペース)」と呼ばれます。デジタルカメラやスキャナの中には、取得したデータに、色空間に関する情報、すなわちカラーマネジメントのためのプロファイルを埋め込むものがあります。

このプロファイルは、インターナショナル・カラー・コンソーシアムという標準化団体が規格を出していて、この規格に沿ったものは頭文字を取ってICCプロファイルと呼ばれたりします。

映像を取得する側もそうですが、映像を映し出すディスプレイや、映像を印刷するプリンタもこのプロファイルを持っています。特にプリンタは、光学的な3要素(赤・緑・青、RGB)を塗料の4要素(シアン・マゼンダ・イエロー、キーカラー=ブラック)に変換する必要から、このプロファイルを個別に持っています。たいていはプリンタドライバがこのプロファイルをシステムにインストールするようになってます。

» 続きを読む

カテゴリー: メモ
投稿者: Mocchi

NP_MediaUtils ver.0.9.6 (RC2)ではウェブログIDをブラウザに保存するため、InitSkinParse、PostAuthentication、PreSendContentTypeの各イベントでクッキーを設定していました。が、昨日風呂に入りながら考えていたら、これはおかしいことに気づきました。

ネットワーク 関数 > setcookie @ php.net

クッキーの設定タイミングは、HTTPヘッダー以外の出力がなされる前です。ウェブサーバからブラウザに送信されるHTTPヘッダーの中でクッキーが送信されます。そのため、PreSendContentTypeイベントで送信しておくだけで十分でした。

NP_MediaUtilsの次期バージョンであるver.1.0.0はこのように変更します。なお、この変更によって、システム全体から見たスクリプトの役割が変化することはありません。多少効率がよくなるくらいです。

カテゴリー: メモ
投稿者: Mocchi

PHP側の実行時間制限は非セーフモード環境下では関数「set_time_limit」で設定できます。

今度はウェブブラウザ側のHTTP接続時間制限を考慮する必要があります。

» 続きを読む

カテゴリー: メモ
投稿者: Mocchi

リサンプリングをバッチ処理するにあたり、スクリプト実行時間の問題があります。リサンプリングは結構重い処理なので、それなりに時間がかかります。スクリプトの実行時間制限が来てもバッチ処理が終わらない可能性があります。

» 続きを読む

カテゴリー: メモ
投稿者: Mocchi

問題点

PHPで大きな画像をGDバインディングで処理する際、「Fatal error: Allowed memory size of XX bytes exhausted (tried to allocate XX bytes) in XXXX」が発生することがあります。これは、リサンプリングに必要なメモリ消費量に対して、サーバからPHPに割り当てられているメモリ量が少ないために発生します。

原因

通常、PHPのGDバインディングで画像をリサンプリングするには、以下の2つのデータ用にサーバ上でメモリを確保する必要があります。

  1. 元画像をGDフォーマットに展開したデータ
  2. リサンプリング画像の雛形となるGDフォーマットデータ

1.で確保したGDフォーマットのデータからリサンプリング後のピクセルを算出して2.の雛形に流し込むことで、リサンプリングを行っています。もし画像が大きすぎる場合は、1.の途中でメモリを使い切ることになります。エラーの原因はこれです。

» 続きを読む

カテゴリー: NP_ImageLimitSize
投稿者: Mocchi

NP_ImageLimitSizeにて、リリースキャンディデートを公開しました。

2010/12/26にRC1を作成した後に仕様を変更したので、RC2としてリリース。致命的なバグがなければ、このままバージョン1.0をリリースします。

NP_ImageLimitSize (ver.0.9.6) - 5KB

今回はドキュメントを同梱せず、Wikiにて情報を提供することにしました。

NP_ImageLimitSize @ japan.nucleuscms.org/wiki

カテゴリー: NP_Thumbnail
投稿者: Mocchi

NP_Thumbnailにて、リリースキャンディデートを公開しました。

2010/12/26にRC1を作成した後に仕様を変更したので、RC2としてリリース。致命的なバグがなければ、このままバージョン1.0をリリースします。

NP_Thumbnail(ver.3.9.6) - 9KB

今回はドキュメントを同梱せず、Wikiにて情報を提供することにしました。

NP_Thumbnail @ japan.nucleuscms.org/wiki

カテゴリー: NP_Attach
投稿者: Mocchi

NP_Attachにて、リリースキャンディデートを公開しました。

2010/12/26にRC1を作成した後に仕様を変更したので、RC2としてリリース。致命的なバグがなければ、このままバージョン1.0をリリースします。

NP_Attach (ver.0.9.6) - 8KB

今回はドキュメントを同梱せず、Wikiにて情報を提供することにしました。

NP_Attach @ japan.nucleuscms.org/wiki