2012-02-13 5 views
0

ユーザーが画像を保存したときに別の画像(ウォーターマーク付き)を生成したいと考えています。保存時の画像出力が異なる

私がいることを知っている:それは直接画像にアクセスし、画像/ JPEG(画像コンテンツタイプ)だとき、それは、SRC = "" だから

に含まれているとき

  • Broswerは、テキスト/ HTMLを送りますブラウザーがsrc = ""からサーバーに照会すると、良いcontent-typeを送信します。 broswerが画像URLに行くなら、text/html、application/html + xmlなどを送信します。

    ユーザは「名前を付けて保存」コマンドを実行するとウォーターマークを作成する方法を知っていますか?最もエレガントな解決策は、上記与えた

    おかげ

+1

'誰もが「名前を付けて保存」のコマンドを実行した場合にウォーターマークを発生させる方法を知っています。 –

+0

http://9gag.com/にアクセスし、画像を保存しようとすると、ウォーターマークが追加されています。説明できますか ? –

+1

@DavidBélanger彼らはマイナスのマージンでそれを作っているだけです。 「ウォーターマーク」は既に画像上にあります。 – Gumbo

答えて

0

は(さんが言わせて画像をアップロードするとき)前に生成されていますあまり高いです(透かしを非表示になります)画像の上にボックスを作成することでした。

このようにしてCSSは画像の下に白いボックスを隠し、誰かが「名前を付けて保存」を使用するとボックスが表示されます。サーバー上ではressourceは使用されません。

私が開発したブラウザのヘッダーに基づく解決策は次のとおりです。

<?php 
    #... 

    # Require PHP to work as a module in apache 
    $SentHeaders = apache_request_headers(); 
    #$Watermark = strpos($SentHeaders['Accept'], 'text'); 
    $Watermark = preg_match_all('/text/', $SentHeaders['Accept'], $matches); 

    # Set the header 
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
    header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); 
    header('Cache-Control: no-store, no-cache, must-revalidate'); 
    header('Cache-Control: post-check=0, pre-check=0', false); 
    header('Pragma: no-cache'); 

    # HHeader required 
    ($Image->ContentType) ? header('Content-Type: '.$Image->ContentType) : header('Location: /404'); 

    # Accès direct/save as 
    if($Watermark){ 
     # Direct Image Access 
     #... 
    } else { 
     # Image included in src="" 
     #... 
    } 
    #... 
    ?> 
関連する問題