AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Преобразование 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'>&lt;&lt;Назад</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);
    }
}

Источник: http://cns.shadrinsk.net

Скачать архив с примером.


.

© Copyright 2008-2017 by KDG