|
|
автор: Саня_ (15.09.2005 в 00:38) |
|
|
для: glsv (Дизайнер)
(14.09.2005 в 04:44)
| | > Но очень не советую пользоваться подобным скриптом в реальном сайте...
:) я это понял уже после первого тестирования. Ну просто любопытство подтолкнуло написать такой скрипт.
> Да и не защищает он в реальности от кражи картинки...
Зато можно супермелкие картинки (ну там, маркеры всякие) переделать таким способом. И они будут отображаться даже при выключенной опции "показ изображений". | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.09.2005 в 04:44)
| | На мой взгляд наиболее правильный метод защиты картинок, это уменьшение их размера или качества. А если не изменять размер, то один черт можно prinscreen'ом вывести. | |
|
|
|
|
|
|
|
для: Саня_
(14.09.2005 в 01:03)
| | Похоже, что ошибка возникает при потере нулей в переменной, в которую заносится индекс цвета функцией imagecolorat().
Вот этот скрипт отрабатывает правильно.
<?
<?php
$file = "test.jpg";
$img = imagecreatefromjpeg($file);
$size = getimagesize($file);
echo "<pre>";
$buff = '<table cellspacing="0" cellpadding="0" border="0">';
for ($i = 1; $i < $size[0]; $i++) {
$buff .= "<tr>\n";
for ($j = 1; $j < $size[1]; $j++) {
$color = imagecolorat($img, $i, $j);
$rgb = imagecolorsforindex($img, $color);
$buff .= '<td width="1" height="1" style="background-color: rgb('.$rgb["red"].','.$rgb["green"].','.$rgb["blue"].') "></td>';
}
$buff .= "</tr>";
}
$buff .= "</table>";
echo ($buff);
?>
?>
|
Но очень не советую пользоваться подобным скриптом в реальном сайте. Ни Вашим, ни тем более моим. Даже на локальной машине он постоянно норовит выйти из пределов времени выполнения 30 секунд. Что уж говорить о сервере хостинга, где могут быть тысячи сайтов.
Плюс к этому невообразимо увеличивает HTML-код. Да и не защищает он в реальности от кражи картинки. Достаточно сделать копию экрана и все ухищрения пойдут насмарку. | |
|
|
|
|
автор: Саня_ (14.09.2005 в 01:48) |
|
|
для: Саня_
(14.09.2005 в 01:03)
| | По поводу неправильной ориентации я разобрался:
for ($i = 1; $i < $size[1]; $i++) {
$buff .= "<tr>\n";
for ($j = 1; $j < $size[0]; $j++) {
$buff .= '<td width="1" height="1" bgcolor="'.dechex(imagecolorat($img, $j, $i)).'"></td>';
}
$buff .= "</tr>";
}
|
Но как быть с привиранием цветов? | |
|
|
|
|
автор: Саня_ (14.09.2005 в 01:03) |
|
| В одной теме (не помню какой) обсуждались меры по защите картинок. Была мысль о переводе изображения в таблицу, где ячейка зармером 1х1 содержала цвет соответствующего пикселя.
Я сделал скрипт перевода картинки в таблицу. Однако картинка выходит вертикально, если исходная - горизонтальная и некоторые цвета не такие, какими должны быть.
Вот, взгляните:
<?php
$file = "fly.jpg";
$img = imagecreatefromjpeg($file);
$size = getimagesize($file);
$buff = '<table cellspacing="0" cellpadding="0" border="0">';
for ($i = 1; $i < $size[0]; $i++) {
$buff .= "<tr>\n";
for ($j = 1; $j < $size[1]; $j++) {
$buff .= '<td width="1" height="1" bgcolor="'.dechex(imagecolorat($img, $i, $j)).'"></td>';
}
$buff .= "</tr>";
}
$buff .= "</table>";
echo ($buff);
?>
|
В чём загвоздка? | |
|
|
|
|