PDA

Просмотр полной версии : JPG & PNG to TEXT


NOmeR1
10.01.2007, 13:44
Вот нашёл у себя в свалке скриптов интересный скрипт :cool: Вообщем, из сабжа всё ясно!
<?php
define ('TITLE', 'Картинки и Джорж Буль');
# http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Boole.html
# http//www.boutell.com/gd/
?>
<b>Картинки, PHP, GD и Джорж Буль.</b>
<br />
<u>Превращаем растровое изображение в нолики и единички.</u>
<!--2--><!-- preamble -->
<br />
<br />
<br />
<?php
// created by Oleg Puzanov (puzanov@gmail.com)
// special thanks to Andrei Pohilko (apc@kaf-i.kg)

if (isset ($_FILES['pic']))
{
$file=$_FILES['pic']['tmp_name'];
if (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'jpg') $i = ImageCreateFromJpeg($file);
elseif (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'png') $i = ImageCreateFromPNG($file);
else die ("Невозможно обработать изображение в формате GIF");
$o = ImageCreate(imagesx($i), imagesy($i));

for ($n = 0; $n < 256; $n++)
{
imagecolorallocate($o, $n, $n, $n);
}

imagecopy ($o, $i, 0, 0, 0, 0, imagesx ($i), imagesy ($i));

$lim = 256/2;

echo '<pre style="font-size: 8px; letter-spacing: 0px; line-height: 80%;">';

for ($y = 0; $y < imagesy ($o); $y++)
{
for ($x = 0; $x < imagesx ($o); $x++)
{
if ((imagecolorat($o, $x, $y) & 0xFF)>$lim) echo _; else echo 0;
}
echo "\n";
}

echo '</pre>';
}
else
{
?>
<form enctype='multipart/form-data' method='POST'>
Картинки форматов JPG и PNG успешно превратятся в "двоичный" текст
<br />
<br />
Можно нарисовать чего-нибудь прикольное, "отдвоичить" и пихать как подпись к e-mail
<br />
<br />
Учтите, что чем больше картинка, тем дольше будете ждать. Оптимальный размер 100 на 100 пикселей
<br />
<input type='file' name='pic'>
<br />
<input type='submit' value=' Превратить! '>
</form>
<br />
<br />
Идея и разработка программы: Олег Пузанов<br />
Отдельное спасибо Андрею Похилько
<?
}
?>
Если у кого есть новее или лучше, то выкладываем здесь!

devil2007
10.01.2007, 22:35
Отлично +

fucker"ok
10.01.2007, 23:21
Улыбнуло) Я нечто на паскале делал в детстве (правда из bmp)

NOmeR1
12.01.2007, 17:22
Поправил скрипт, теперь он превращает картинку в нолики и символы "_". Смотрится лучше.

blaga
12.01.2007, 17:43
Раз так, то вот теперь с цветом, черно-зеленый. Правда вследствии таких изменений, выходной код вырос примерно в 20 раз(в весе)

<?php
Error_Reporting(7);
define ('TITLE', 'Картинки и Джорж Буль');
# http://www-gap.dcs.st-and.ac.uk/~history/Mathematicians/Boole.html
# http//www.boutell.com/gd/
?>
<b>Картинки, PHP, GD и Джорж Буль.</b>
<br />
<u>Превращаем растровое изображение в нолики и единички.</u>
<!--2--><!-- preamble -->
<br />
<br />
<br />
<?php
// created by Oleg Puzanov (puzanov@gmail.com)
// special thanks to Andrei Pohilko (apc@kaf-i.kg)

if (isset ($_FILES['pic']))
{
$file=$_FILES['pic']['tmp_name'];
if (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'jpg') $i = ImageCreateFromJpeg($file);
elseif (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'png') $i = ImageCreateFromPNG($file);
else die ("Невозможно обработать изображение в формате GIF");
$o = ImageCreate(imagesx($i), imagesy($i));

for ($n = 0; $n < 256; $n++)
{
imagecolorallocate($o, $n, $n, $n);
}

imagecopy ($o, $i, 0, 0, 0, 0, imagesx ($i), imagesy ($i));

$lim = 256/2;

echo '<pre style="font-size: 6px; letter-spacing: 0px; line-height: 80%;">';

for ($y = 0; $y < imagesy ($o); $y++)
{
for ($x = 0; $x < imagesx ($o); $x++)
{
if ((imagecolorat($o, $x, $y) & 0xFF)>$lim) echo 1; else echo "<span style=\"color: green\">0</span>";
}
echo "\n";
}

echo '</pre>';
}
else
{
?>
<form enctype='multipart/form-data' method='POST'>
Картинки форматов JPG и PNG успешно превратятся в "двоичный" текст
<br />
<br />
Можно нарисовать чего-нибудь прикольное, "отдвоичить" и пихать как подпись к e-mail
<br />
<br />
Учтите, что чем больше картинка, тем дольше будете ждать. Оптимальный размер 100 на 100 пикселей
<br />
<input type='file' name='pic'>
<br />
<input type='submit' value=' Превратить! '>
</form>
<br />
<br />
Идея и разработка программы: Олег Пузанов<br />
Отдельное спасибо Андрею Похилько
<?
}
?>

NOmeR1
12.01.2007, 17:54
Глупо, потому что каждый символ будет теперь не просто 0, а :
<span style="color: green">0</span>
Имхо, это не нужно.

blaga
12.01.2007, 18:21
Именно поэтому я и сказал что он раз в двадцать увеличился.

TTyck
12.01.2007, 18:21
Прикольно

j0ze
22.05.2007, 09:11
не работаит

Fatal error: Call to undefined function ImageCreateFromJpeg() in D:\www\t.php on line 20

TANZWUT
22.05.2007, 09:27
_http://keepers-klan.org/
вот как надо делать, чисто JS ;)

Isis
22.05.2007, 09:34
не работаит

Fatal error: Call to undefined function ImageCreateFromJpeg() in D:\www\t.php on line 20
У тебя должна быть установлена GD библиотека

j0ze
22.05.2007, 09:35
а где скачать?

Isis
22.05.2007, 09:40
http://php.net/gd

NOmeR1
27.06.2007, 00:34
Хы. Темка старая, но полезная. Добавил античатовский стиль.
<meta Content-type: text/plain; charset=windows-1251>
<html>
<head>
<style>
body{
padding:10px;
background:#2A2E33;
font-family:tahoma, verdana, arial;
font-size:11px;
text-align:center;
color:#B9B9BD;
}
form{
padding:10px;
border:1px solid #666;
width:300px;
margin:0 auto;
}
input{
vertical-align:middle;
margin:1px 0;
padding-right:10px;
border:1px solid #336600;
padding:2px;
background:#363940;
color:#B9B9BD;
}
</style>
<?php
define ('TITLE', 'JPG & PNG to TEXT');
?>
<title>JPG & PNG to TEXT</title>
</head>
<center><h1>JPG & PNG to TEXT</h1></center>
<?php

if (isset ($_FILES['pic']))
{
$file=$_FILES['pic']['tmp_name'];
if (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'jpg') $i = ImageCreateFromJpeg($file);
elseif (strtolower (end (explode ('.', $_FILES['pic']['name']))) == 'png') $i = ImageCreateFromPNG($file);
else die ("Формат может быть только JPG и PNG. <img src='http://forum.antichat.ru/images/smilies/wink.gif'>");
$o = ImageCreate(imagesx($i), imagesy($i));

for ($n = 0; $n < 256; $n++)
{
imagecolorallocate($o, $n, $n, $n);
}

imagecopy ($o, $i, 0, 0, 0, 0, imagesx ($i), imagesy ($i));

$lim = 256/2;

echo '<pre style="font-size: 8px; letter-spacing: 0px; line-height: 80%;">';

for ($y = 0; $y < imagesy ($o); $y++)
{
for ($x = 0; $x < imagesx ($o); $x++)
{
if ((imagecolorat($o, $x, $y) & 0xFF)>$lim) echo _; else echo 0;
}
echo "\n";
}

echo('<br><img src="http://forum.antichat.ru/images/smilies/rolleyes.gif"></pre>');
}
else
{
?>
<form enctype='multipart/form-data' method='POST'>
<input type='file' name='pic'><br><br>
<input type='submit' value='Compile to TEXT'>
</form>
<?
}
?>
:rolleyes: