Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Картинка в виде таблицы
 
 автор: Саня_   (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);
?>

В чём загвоздка?

   
 
 автор: Саня_   (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>";
}

Но как быть с привиранием цветов?

   
 
 автор: glsv (Дизайнер)   (14.09.2005 в 04:44)   письмо автору
 
   для: Саня_   (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-код. Да и не защищает он в реальности от кражи картинки. Достаточно сделать копию экрана и все ухищрения пойдут насмарку.

   
 
 автор: Ziq   (14.09.2005 в 06:25)   письмо автору
 
   для: glsv (Дизайнер)   (14.09.2005 в 04:44)
 

На мой взгляд наиболее правильный метод защиты картинок, это уменьшение их размера или качества. А если не изменять размер, то один черт можно prinscreen'ом вывести.

   
 
 автор: Саня_   (15.09.2005 в 00:38)
 
   для: glsv (Дизайнер)   (14.09.2005 в 04:44)
 

> Но очень не советую пользоваться подобным скриптом в реальном сайте...
:) я это понял уже после первого тестирования. Ну просто любопытство подтолкнуло написать такой скрипт.

> Да и не защищает он в реальности от кражи картинки...
Зато можно супермелкие картинки (ну там, маркеры всякие) переделать таким способом. И они будут отображаться даже при выключенной опции "показ изображений".

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования