再配布不可識別子(転送不可設定)
携帯で表示やダウンロードした画像は端末のデータフォルダに保存可能です。再配布不可設定を行うと、保存された画像データをメール添付などで端末外に再配布(転送)することを防ぐことができます。
実現方法
再配布不可の実現方法はキャリア毎に異なります。
| キャリア | 方法 | 備考 |
| DoCoMo Mova | N/A | 常に再配布できない? |
| DoCoMo FOMA | イメージファイルのコメント部にcopy=”NO” | |
| EZweb | イメージファイルのコメント部にkddi_copyright=on | |
| SoftBank(非パケット) | 拡張子を jpz, pnzに | |
| SoftBank(パケット) | HTTPヘッダx-jphone-copyright:no-transfer | 他の方法もあり |
Javaによるイメージファイルへのコメント付加
ImageIO APIを利用するとJPEG, PNGに対してコメントを設定することができます。GIFへコメント設定を行う場合には Java SE6.0を使用するか、JAI Image I/O Toolsをセットアップする必要があります。
メタデータ
- JPEG

/markerSequence/com@comment = コメント
- PNG

/tExt/tExtEntry@keyword = Copyright
/tExt/tExtEntry@value = コメント
- GIF

/CommentExtensions/CommentExtension@value = コメント
サンプル
リクエストに対応したイメージファイルにコメントを付加してレスポンスを返すServletサンプルです。以下の機能があります。
- httpで公開していないファイルシステム上のファイルとのマッピング
- アクセス端末に応じたコメント付加またはHTTPヘッダー追加
セットアップ方法
utilzimg.jar を WEB-INF/lib に配置し、環境に合わせて web.xmlの指定を行います。以下は例です。
<servlet>
<servlet-name>NoTransferImageServlet</servlet-name>
<servlet-class>jp.utilz.util.image.NoTransferImageServlet</servlet-class>
<init-param>
<param-name>mountPoint</param-name>
<param-value>/home/ntimg</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>NoTransferImageServlet</servlet-name>
<url-pattern>/ntimg/*</url-pattern>
</servlet-mapping>
この例では、実際に公開するイメージファイルを /home/ntimg ディレクトリに配置します。 http://hostname/ntimg/filename のようなリクエストがあると /home/ntimg/filename を読み込み、必要に応じてHTTPヘッダーの追加、コメントを付加したイメージのレスポンスを返します。
SoftBankの非パケット端末に対応させるため、imgタグで指定するURLの拡張子は常に jpzまたはpnzにしておくべきです。このサンプルではリクエストされた拡張子が jpz, pnz の場合は jpg, png に置き換えてファイルを読み込みますので、実際のファイルをリネームする必要はありません。
サンプルの注意点
- アクセス端末の判定は厳密に行われていません。セキュリティを重視する場合はリモートアドレスも含めて判定する必要があります。要件に合わせてソースを修正してください。
- GIFファイルに対応するには、Java 6.0を利用するか、JAI Image I/O Toolsをセットアップする必要があります。
- 毎回コメント付加処理が実行されるため非効率です。要件に合わせてキャッシュ・システムとの連携や実装を検討してください。
- ImageIOのメモリリーク(実際にはFile.deleteOnExit)を回避するため、ImageIO.setUseCache(false)を呼び出す必要があるかも知れません。Bug Database
ダウンロード
- utizimg.zip

ライセンス
無料でご利用いただけます。改変も自由です。再配布は禁止とさせていただきます。
免責事項
このソフトウェアの利用または利用不可によって生じた全ての損害に対して当方は一切の責任を負わないものとさせていただきます。