1

Тема: Генератор HTML зображень

Коли разбирав взлом простих каптч,тоді виникла така ідея,хз,може комусь пригодиться..

Вказуємо шлях до зображення в мережі,зчитуємо колір кожного пікселя по вертикалі/горизонталі.
Отримуємо його колір в RGB і переводимо в HEX для вставки в тег <font>,де кожен піксель представлений в вигляді крапки.

Використано PHP + GD (для роботи з графікою),ну і верстка  HTML,CSS
В сучасних версіях браузерів зображення має виглядати цілісним.. (в інших може бути трішки роздрібненим).

<?php

error_reporting(0);

if ($_GET['html_image']) {

$getImg = $_GET['html_image'];

$imgType = exif_imagetype($getImg); 


if ($imgType == 1) $img = imagecreatefromgif($getImg);

elseif ($imgType == 2) $img = imagecreatefromjpeg($getImg);

elseif ($imgType == 3) $img = imagecreatefrompng($getImg);

elseif ($imgType == 6) $img = imagecreatefrombmp($getImg);

else exit('Невірний формат зображення!');

echo '<style>

*{
  white-space: 0px;
  letter-spacing: -3px; 
}

br{
  margin-top: 2px;
  margin-bottom: -19px;
  content:"";
  display: block;
}

</style>
<br>';


$w_img = imagesx($img); 

$h_img = imagesy($img);

 for ($h=1; $h<$h_img; ++$h) {
 
   for ($w=1; $w<$w_img; ++$w) { 

    $RGB = imagecolorat($img, $w, $h); 

    $R = ($RGB >> 16) & 0xFF;

    $G = ($RGB >> 8) & 0xFF;

    $B = $RGB & 0xFF;

   $HEX = str_pad(dechex($R), 2, '0', STR_PAD_LEFT);

   $HEX .= str_pad(dechex($G), 2, '0', STR_PAD_LEFT);

   $HEX .= str_pad(dechex($B), 2, '0', STR_PAD_LEFT);

    echo '<font color="#'.$HEX.'">.</font>';

    } 

 echo '<br>';

 }

}

 else {

 echo '<div><form action="?html_image">
   <p>Адрес зображення:</p>
   <p><input name="html_image"></p>
   <p><input type="submit" value="Генерувати"></p>
  </form></div>';

 }
=)

2 Востаннє редагувалося VTrim (30.03.2015 15:32:27)

Re: Генератор HTML зображень

Тепер згенерований код пишеться в .html файл в локальну директорію.
Але якщо зображення велике,браузер лягає,не може обробити стільки html коду..

<?php

error_reporting(0);

if ($_GET['html_image']) {

$getImg = $_GET['html_image'];

$imgType = exif_imagetype($getImg); 


if ($imgType == 1) $img = imagecreatefromgif($getImg);

elseif ($imgType == 2) $img = imagecreatefromjpeg($getImg);

elseif ($imgType == 3) $img = imagecreatefrompng($getImg);

elseif ($imgType == 6) $img = imagecreatefrombmp($getImg);

else exit('Невірний формат зображення!');

$style = '<style>

*{
  white-space: 0px;
  letter-spacing: -3px; 
}

br{
  margin-top: 2px;
  margin-bottom: -19px;
  content:"";
  display: block;
}

</style>
<br>';

echo $style;

$fname = md5(time());

file_put_contents($fname.'.html', $style);

$w_img = imagesx($img); 

$h_img = imagesy($img);

 for ($h=1; $h<$h_img; ++$h) {
 
   for ($w=1; $w<$w_img; ++$w) { 

    $RGB = imagecolorat($img, $w, $h); 

    $R = ($RGB >> 16) & 0xFF;

    $G = ($RGB >> 8) & 0xFF;

    $B = $RGB & 0xFF;

   $HEX = str_pad(dechex($R), 2, '0', STR_PAD_LEFT);

   $HEX .= str_pad(dechex($G), 2, '0', STR_PAD_LEFT);

   $HEX .= str_pad(dechex($B), 2, '0', STR_PAD_LEFT);
  
   $HTML = '<font color="#'.$HEX.'">.</font>';

    echo $HTML;

    file_put_contents($fname.'.html', $HTML, FILE_APPEND);

    } 

 echo '<br>';

 file_put_contents($fname.'.html', '<br>', FILE_APPEND);

 }

}

 else {

 echo '<div><form action="?html_image">
   <p>Адрес зображення:</p>
   <p><input name="html_image"></p>
   <p><input type="submit" value="Генерувати"></p>
  </form></div>';

 }
=)