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 14: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>';
}