Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Запрет на сохранение изображения (https://javascript.ru/forum/misc/2563-zapret-na-sokhranenie-izobrazheniya.html)

Вoв@ 16.01.2009 11:56

Запрет на сохранение изображения
 
Добрый день!
Прошу совета у специалиста! У меня на сайте стоят небольшие изображения small.jpg, при клике на которых открывается окно с большим изображением - large.jpg:
<A title="увеличить?" onClick="window.open ('img/large.jpg', 'image','toolbar=no, menubar=no, resizable=no, scrollbars=no, '); return false;" href=""><IMG src="img/small.jpg" oncontextmenu="return false" /></A>

Тут стоит запрет на правый клик по small.jpg. Как теперь запретить сохранение или правый клик на large.jpg?

Спасибо всем кто ответит!

Kolyaj 16.01.2009 12:02

Всем этим вы будете только раздражать пользователей, а тот, кто захочет сохранить изображение -- сохранит его.

ZoNT 16.01.2009 12:05

Невозможно не дать сохранить изображение, так как раз оно уже отобразилось - оно есть на моём компьютере... Просто надо вытащить его из кэша, или отскриншотить, или просто посмотреть в коде ссылку на него и открыть данную ссылку в новой вкладке и т.д.

Вoв@ 16.01.2009 12:05

Я знаю, но у меня там тысяча картинок, которые есть смысл сохранять только все вместе, как коллекцию, а не некоторые из них. А сохранять все через Printscreen никто не будет, т.к. это очень долго.

ZoNT 16.01.2009 12:08

Тогда простенький парсер на ПХП, котрый выдирает со страницы все ссылки на картинки и сохраняет всем скопом...

Вoв@ 16.01.2009 12:17

ну это Вы знаете как это делать, но простой пользователь не знает.

ZoNT 16.01.2009 12:35

Ну так простому пользователю и нафиг не нужны картинки. Запрет на копирование нужен для тех, кто хочет скопировать, а кто хочет - тот найдёт, кто ему поможет :)

Gvozd 16.01.2009 12:40

Цитата:

Сообщение от Вoв@
Я знаю, но у меня там тысяча картинок, которые есть смысл сохранять только все вместе, как коллекцию, а не некоторые из них.

вам не кажется, что никто не станет красть ваши картинки через правый щелчок мыши?я бы задолбался так делать.

ZoNT,+1
на любом фри-ланс ресурсе ходят толпы толковых, но безрейтинговых новичков, готовых сделать такую работу за отзыв.потому что это элементарно делается в большинстве случаев

Wow@ 16.01.2009 14:53

Ну вот, попросил у людей помощи в решении простого, на мой взгляд, вопроса,.. а мне все объясняют, что мне это не нужно. Если б не нужно, я бы не спрашивал... Неужели жалко поделиться знаниями? Или вы сами не можете решить эту задачу и сейчас меня отговариваете?

Kolyaj 16.01.2009 15:00

Цитата:

Сообщение от Вoв@
Как теперь запретить {del}сохранение или{/del} правый клик на large.jpg?

Ну так открывайте не просто большую картинку, а нормальную страницу с большой картинкой, и прописывайте для нее что угодно.

Wow@ 16.01.2009 15:11

Это понятно, что так можно, но придётся тогда для каждой фотки делать страницу, а их у меня тысяча. Да и в хостинг наверное потом не влезет...

Kolyaj 16.01.2009 15:34

get-параметром передавать имя файла и вставлять его в нужное место.

Вопрос нескромный: картинки-то свои, сам фоткал?

Wow@ 16.01.2009 15:59

нет не фоткал, но собирал в кучу полгода, интерес на скачивание может проявить только неспециалист, поэтому и вопрос...
А Вы не могли бы изменить код, который я написал в начале темы так чтоб получилось то, о чём я говорю?

x-yuri 16.01.2009 16:03

Wow@, тебе уже сказали, чтобы реализовать твою идею надо либо создавать под каждое изображение отдельный html-файл, что не особо разумно
либо создать один html-файл, который будет отображать все полноразмерные изображения и получать имя файла с изображением через параметры запроса
вот функция для получения параметра по имени (http://www.netlobo.com/url_query_string_javascript.html)
p.s. web-страницы рассчитаны на открытый доступ к информации, поэтому попытки запретить такой доступ либо невозможны, либо их можно обойти

Kolyaj 16.01.2009 16:28

Цитата:

Сообщение от Wow@
нет не фоткал, но собирал в кучу полгода

"Я тут картинок наворовал, не подскажите, как сделать так, чтобы их у меня не своровали?"

x-yuri 16.01.2009 16:33

Цитата:

нет не фоткал, но собирал в кучу полгода, интерес на скачивание может проявить только неспециалист, поэтому и вопрос...
А Вы не могли бы изменить код, который я написал в начале темы так чтоб получилось то, о чём я говорю?
на самом деле более надежный вариант запретить скачивание - использовать флеш-ролик, отображающий картинки, но картинки в нем не содержатся а скачиваются им с сервера. Кроме того, надо предусмотреть защиту от скачивания картинок с сервера, ведь если флеш-ролик это может, то может и любой другой пользователь ;-)

ZoNT 16.01.2009 16:35

ага, я просто запущу http-трейсер и просто распарсю его лог и по нему скриптом выкачаю все картинки... Делов-то... Никак тебе флэш не поможет...

Kolyaj 16.01.2009 16:37

x-yuri,
раньше в таких случаях хорошо помогала дискетка. Скидываем на дискетку файлы, которые нельзя скачивать, и кладем ее в сейф. Сейф на ключ, ключ проглотить. С развитием технологий появилась возможность использовать более емкие носители, как то: флешка или cd.

x-yuri 16.01.2009 16:42

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

Kolyaj 16.01.2009 16:45

Цитата:

Сообщение от x-yuri
так я ж и говорю, надо какую-нибудь защиту от скачивания изображений с сервера изобрести

Не надо ничего изобретать. Пустая трата времени.

x-yuri 16.01.2009 16:49

Цитата:

x-yuri,
раньше в таких случаях хорошо помогала дискетка. Скидываем на дискетку файлы, которые нельзя скачивать, и кладем ее в сейф. Сейф на ключ, ключ проглотить. С развитием технологий появилась возможность использовать более емкие носители, как то: флешка или cd.
это не я проблему "ограничить скачивание" придумал, я просто размышляю, что можно сделать
Цитата:

Не надо ничего изобретать. Пустая трата времени.
Для человека, который задачу придумал - похоже пустая. Кроме того, я изначально сказал, что web-страницы для такого не предназначены. Но я думаю, что защиты основаны не на невозможности их взлома, а на сложности этого мероприятия

ZoNT 16.01.2009 16:52

сложность взлома меньше сложности защиты.

x-yuri 16.01.2009 16:59

Цитата:

сложность взлома меньше сложности защиты.
я что претендовал на серьезный уровень защиты? И не важно, что сложнее. Важнее сколько защита продержится

Gvozd 16.01.2009 17:01

Цитата:

Сообщение от Wow@
Это понятно, что так можно, но придётся тогда для каждой фотки делать страницу, а их у меня тысяча. Да и в хостинг наверное потом не влезет...

во первых, страницы можно генерить на лету серверными средствами
а во вторых если вы боитесь что на хостинге может не хватить мегабайт жесткого пространства, то этот хостинг вам не подходит

Kolyaj 16.01.2009 17:08

Цитата:

Сообщение от x-yuri
Важнее сколько защита продержится

Если защита информации стоит много дороже самой информации, такая защита не нужна.

А если взлом много дешевле защиты, то это вообще баловство.

x-yuri 16.01.2009 17:22

Цитата:

Если защита информации стоит много дороже самой информации, такая защита не нужна. А если взлом много дешевле защиты, то это вообще баловство.
Если защита информации стоит много дороже самой информации, то это баловство... или жадность ;-)

Wow@ 28.01.2009 00:26

Цитата:

Сообщение от Kolyaj (Сообщение 10843)
Не надо ничего изобретать. Пустая трата времени.

Нигде невозможно добиться абсолютно 100% результата, если результат лучше на 1%, чем раньше, то это уже хорошо...По спирали, друг, по спирали...

Zibba 03.02.2009 03:48

Еще как вариант, поверх изображения создавать div с шириной и высотой изображения, и задать ему прозрачность например 0.01. Но это как уже говорили не панацея, зато Вам не придется заморачиваться с упомянутыми правыми клавишами :)

Андрей Параничев 03.02.2009 15:44

Zibba,
Зачем прозрачность? Установки visibility: hidden будет достаточно.

Zibba 03.02.2009 16:55

Ну или так, просто если например установить цвет div белым или черным и прозрачность задать, то человек уже сможет просмотреть картинку не в оригинале, а чуть более темную например или светлую и т.д.. Т.е. она уже будет не в оригинальных цветах, что может защитить ее от метода воровства при помощи принтскрина :) . Либо качество картинки полученное таким способом будет заведомо не оригинальным. Но тут уже на усмотрение автора, чего он конкретно хочет добиться.

Олег 04.02.2009 21:09

Можно придумать несколько фишек, навскидку
1. Поверх изображения наложить прозрачный див - тогда меню будет вызываться для дива а не изображения
2. Вставить изображение через Canvas используя JS

x-yuri 04.02.2009 21:12

Цитата:

2. Вставить изображение через Canvas используя JS
можно подробнее?

Олег 04.02.2009 23:37

Цитата:

Сообщение от x-yuri (Сообщение 12068)
можно подробнее?

Да, вот пример, только там с помощью канвы изображения поворачиваются (нижний левый оранжевый квадратик для поворота)/растягиваются , для ie использованы функции activex (directx компонент), что исключает надобность юзания explorercanvas и уменьшает размер скрипта до нескольких строк

http://olejek777.narod.ru/

Гость 04.02.2009 23:40

Цитата:

Сообщение от x-yuri (Сообщение 12068)
можно подробнее?

Canvas tutorial

Андрей Параничев 04.02.2009 23:46

Олег,
Canvas можно сохранить, как обычное изображение в формате png.

Олег 05.02.2009 00:10

А тогда если кликнуть на "Сохранить страничку" то в папке с файлами страницы не будет сохраненное фото. А сверху канвы див, тогда без копания в исходном коде страницы не вытянишь рисунок :-(

Олег 05.02.2009 00:31

что то вроде такого, только с размеры надо подправить и добавить прозрачный див

<html>

<OBJECT ID="DAControl" CLASSID="CLSID:B6FFC24C-7E13-11D0-9B47-00C04FC2F51D" STYLE='WIDTH:100px;HEIGHT:100px;'></OBJECT>
<canvas id='cr' width='200px' height='200px' style='-moz-opacity:0.3;'/>

<script>

window.onload = function () {
if ('\v'=='v')
{
//DAControll.Stop(); tc
	mDAStatics = DAControl.PixelLibrary;
	myOval1= mDAStatics.ImportImage("i.JPG");
	DAControl.Image = myOval1; 
	DAControl.Start();
}
else
{
    
	cu = document.getElementById('cr');

    var c = new Image(100,100);
    c.src = 'i.JPG';

    var ct = cu.getContext('2d');
    ct.drawImage(c,0,0,60,60,0,0,60,60);

}

}

</script>

</html>

x-yuri 07.02.2009 16:01

if ('\v'=='v')

это типа проверка на IE? А не лучше ли проверять наличие метода getContext и если его нету - вставлять object? Или проверять поддержку canvas другим методом?


Часовой пояс GMT +3, время: 07:27.