PHP

Jpeg2text или немного баловства



Сегодня не напрягающая мозги заметка, которая создана лишь с целью позабавиться. Из картинки мы будем делать цветной ASCII ART. Пригодится для поздравлений или просто шутки ради.
Нам понадобится любая картинка в формате jpeg (кто хочет поддержку других форматов, может легко это доделать) и немного кода на php + расширение gd (хотя сейчас сложно найти хостинг без поддержки этой замечательной графической библиотеки).

Алгоритм до безумия прост:
— Ресайзим картинку до размеров по максимальному измерению до 100 пикселей (падает точность, но скорость заметно возрастает).

— В цикле по всем пиксилям полученного изображения выводим любой символ (я предпочел звездочку «*»), закрашивая его соответствующим цветом исходного изображения.

Еще допишем стили, чтобы наш ASCII ART красиво отображался (проверял в FF и Chrome):
   div#picture span {
      display: block;
      float: left;
      width: 5px;
      height: 5px;
   }

И исходный код трансформатора на php:
<?php
/**
 * @author vredniy.ru
 */
$file = "homer6.jpg";

// максимальное измерение (прибавляет скорости)
$mSize = 100;

$im = imagecreatefromjpeg($file);
list($x, $y) = getimagesize($file);
$ratio = $x/$y;
if ($x > $y) {
   $nx = $mSize;
   $ny = round($mSize / $ratio);
} else {
   $ratio = 1/$ratio;
   $ny = $mSize;
   $nx = round($mSize / $ratio);
}
$ni = imagecreatetruecolor($nx, $ny);
// создаем пропорционально уменьшенную копию
imagecopyresampled($ni, $im, 0, 0, 0, 0, $nx, $ny, $x, $y);

$message = '<div id="picture">';
for($h = 0; $h < $ny; $h++) {
   $message .= '<div style="clear:both"></div>';
   for($w = 0; $w < ceil($nx); $w++) {
      $rgb = imagecolorat($ni, $w, $h);
      $r = ($rgb >> 16) & 0xFF;
      $g = ($rgb >> 8) & 0xFF;
      $b = $rgb & 0xFF;
      $message .= sprintf('<span style="color: rgb(%d, %d, %d)">*</span>', $r, $g, $b);
   }
}
$message .= '</div>';
echo $message;
?>

Первое изображение в заметке — это результат трансформации изображения чуть ниже. Удачи вам и кода без ошибок

Теги:
Jpeg2text? трансформация, ASCII, ART
Добавлено: 15 Сентября 2013 04:29:08 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...