Другой вывод изображения при сохранении как - PullRequest
0 голосов
/ 13 февраля 2012

Я хочу иметь возможность создавать другое изображение (с водяным знаком), когда пользователь сохраняет изображение.

Я знаю, что:

  • Broswer отправляет текст / html, когда этопрямой доступ к изображению и image / jpeg (тип содержимого изображения), когда он включен в src = ""

Так что, если браузер запрашивает сервер у src = "", он отправляет хороший контент-тип.Если броузер идет по URL-адресу изображения, он отправляет текст / html, application / html + xml и т. Д. *

Кто-нибудь знает, как сделать водяные знаки, если пользователь выполнит команду «Сохранить как»?

Спасибо

1 Ответ

0 голосов
/ 13 февраля 2012

Самое элегантное решение, приведенное выше, состояло в том, чтобы создать прямоугольник над изображением, который меньше (и будет скрывать водяной знак), который был сгенерирован ранее (скажем, при загрузке изображения).

Таким образом,CSS скрывает белое поле под картинкой, и когда кто-то использует «Сохранить как», поле появляется.Ресурс на сервере не используется.

Вот решение, основанное на разработанном мной заголовке браузера.Не работайте с "Сохранить как", но работайте для изображения с прямым доступом и 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=""
        #...
    }
    #...
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...