Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через 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>
<h3>Скрипт генерирует HTML таблицу из загруженного рисунка</h3>
<br>
Используйте Gif файл, шириной <= <?=$conf['width']?>, высотой <= <?=$conf['height']?>
<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>
</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);
}
}
.
Прокомментировать/Отблагодарить