Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Преобразование GIF-изображения в таблицу на PHP
Скрипт конвертирует Gif изображение в HTML table получается тот же рисунок, но выданый в браузере, не как графика, а как HTML таблица с ячейками разных цветов. Как пользоваться: нажимаем на кнопку Обзор указываем Гифку, которую хотим преобразовать, ширина должна быть <=100 (по дефолту, настройки меняются в файле ./config.php, но менять не советую, т.к. браузер слишком большую таблицу может не вытянуть), высота должна быть <=100 (по дефолту) выбираем CELLSPACING таблицы, выбираем CELLSPADING таблицы, жмем кнопку Генерация Таблицы и смотрим на результат... если результат вам очень сильно нравится: файл -> сохранить как и сохраняем сгенерированную HTML страничку. Зачем?: согласен что генерация table из рисука это слишком тяжело, но есть плюс: при отключенной графики в браузере клиент всегда сможет увидеть вашу картинку.
config.php:
# максимальная ширина GIF
$conf['width'] = 100;
# маскимальная высота GIF
$conf['height'] = 100;
# max размер выданой ячейки таблицы в px
$conf['size'] = 5;
# max CELLSPACING - у таблицы
$conf['cellpac'] = 5;
# max CELLPADDING - у таблицы
$conf['cellpad'] = 5;
index.php:
require 'config.php';
?>
<html>
<head>
<title>Загрузите рисунок</title>
</head>
<body>
<center>
<h3>Скрипт генерирует HTML таблицу из загруженного рисунка</h3>
<br>
Используйте Gif файл, шириной <= <?=$conf['width']?>, высотой <= <?=$conf['height']?>
</br>
<form action = 'cns.php' method = 'post' enctype="multipart/form-data">
<table align = 'center' border = '1'>
<tr>
<td colspan = '2'><input type = 'file' name = 'img'></td>
</tr>
<tr>
<td>размер ячеек таблицы</td><td><select name = 'td_size'>
<?
for ($n = 1; $n <= $conf['size']; $n++)
{
?>
<option value = '<?=$n?>'><?=$n?> px</option>
?
}
?>
</select></td>
</tr>
<tr>
<td>CELLSPACING таблицы</td><td><select name = 'cellpac' >
<?
for ($n = 0; $n <= $conf['cellpac']; $n++)
{
?>
<option value = '<?=$n?>'><?=$n?> px</option>
<?
}
?>
</select></td>
</tr>
<tr>
<td>CELLSPADING таблицы</td><td><select name = 'cellpad' >
<?
for ($n = 0; $n <= $conf['cellpad']; $n++)
{
?>
<option value = '<?=$n?>'><?=$n?> px</option>
<?
}
?>
</select></td>
</tr>
<tr>
<td colspan = '2'><input type = 'submit' value = 'Генерация таблицы' style = 'width:100%'></td>
</tr>
</table>
</form>
</center>
</body>
</html>
<?
cns.php:
# подключаем файл настроек
require 'config.php';
############################################
# функция для настроек REGISTER GLOBAL = OFF
# переменные берем из суперглобальных массивов
regvar('img', 'td_size', 'cellpac', 'cellpad');
############################################
GenerateTable($img, $td_size, $cellpac, $cellpad);
/*
echo $img['tmp_name'].' img<br>';
echo $td_size.' size<br>';
echo $cellpac.' cellpac<br>';
echo $cellpad.' cellpad<br>';
*/
############################################
# Функция генерации таблицы из изображения
function GenerateTable($img, $td_size, $cellpac, $cellpad)
{
global $conf;
$err = '';
if (!($image = @imagecreatefromGif($img['tmp_name'])))
{
$err = 'Неудача при попытки открыть файл, возможно неверный тип,<br> разрешена обработка только GIF файлов<br>';
}
# константы размера GIF-ки
define('WID', 0);
define('HEI', 1);
$size = getimagesize($img['tmp_name']);
#echo $size[WID].':'.$size[HEI].'<br>';
if ($size[WID] > $conf['width'])
{
$err .= 'Ширина > '.$conf['width'].'<br>';
}
if ($size[HEI] > $conf['height'])
{
$err .= 'Высота > '.$conf['width'].'<br>';
}
if ($td_size > $conf['size'] || $td_size < 1)
{
$err .= 'Неверное значение размера ячеек таблицы<br>';
}
if ($cellpac > $conf['cellpac'] || $cellpac < 0)
{
$err .= 'Неверное значение CELLSPACING таблицы<br>';
}
if ($cellpad > $conf['cellpad'] || $cellpad < 0)
{
$err .= 'Неверное значение CELLSPADING таблицы<br>';
}
if (strlen($err) == 0)
{
echo "<table align=center border=0 CELLSPACING=".$cellpac." CELLPADDING=".$cellpad.">\n";
for ($y = 0 ; $y < $size[HEI] ; $y++)
{
echo "<tr>\n";
for ($x = 0 ; $x < $size[WID] ; $x++)
{
$rgb = imagecolorat($image, $x, $y);
list($r,$g,$b)=array_values(imageColorsForIndex($image, $rgb));
echo "<td bgcolor=#".RGB_HEX($r).RGB_HEX($g).RGB_HEX($b)." width=".$td_size." height=".$td_size."></td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
# echo "R=$r, g=$g, b=$b<br>";
# echo '#'.RGB_HEX($r).RGB_HEX($g).RGB_HEX($b);
}
else
{
echo "<center>Ошибка!:<br><font color = 'red'>".$err."</font><br>Вернитесь <a href = 'index.php'><<Назад</a> и повторите попытку</center>";
}
}
############################################
# функция перевода из RGB - HEX
function RGB_HEX($n)
{
$n = dechex($n);
if (strlen($n) == 1) {$n = '0'.$n;}
return $n;
}
############################################
# функция для настроек REGISTER GLOBAL = OFF
# переменные берем из суперглобальных массивов
function regvar()
{
$cnt=func_num_args();
for($i=0; $i<$cnt; $i++) {
$varname=func_get_arg($i);
global $$varname;
if(isset($_GET[$varname]))
$$varname=$_GET[$varname];
elseif(isset($_POST[$varname]))
$$varname=$_POST[$varname];
elseif(isset($_COOKIE[$varname]))
$$varname=$_COOKIE[$varname];
elseif(isset($_FILES[$varname]))
$$varname=$_FILES[$varname];
else
unset($$varname);
if(isset($$varname)&&get_magic_quotes_gpc() && !isset($_FILES[$varname]))
$$varname=stripslashes($$varname);
}
}