2012-02-13 3 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는 서버에서 사용되지 않습니다.

다음은 내가 개발 한 브라우저 헤더를 기반으로 한 솔루션입니다. "다른 이름으로 저장"을 사용하지 말고 직접 액세스 그림과 src = ""에 대한 작업

<?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="" 
     #... 
    } 
    #... 
    ?> 
관련 문제