Avatar billede saybot Nybegynder
09. april 2005 - 14:41 Der er 8 kommentarer

Parser hjælper

jeg har noget kode her som laver et billede om til tekst... det billede den laver om indeholder kun tekst, men det er lige meget.. det er nemlig ikke mit problem..

Jeg ville høre jeg jeg på en eller anden nem måde kunne tage billede direkte fra kilden på nettet, istedet for at skulle gemme billedet på computeren og så uploade.

Her er min kode___________________________________________

<form enctype="multipart/form-data" action="ftdparser.php" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Upload billede fra : <input name="userfile" type="file" />
    <input type="submit" value="Lav til tekst" />
</form>
</HTML>
<font face="Fixedsys" size="1">
<hr>
<?PHP

if(!isset($_FILES['userfile']['tmp_name']))
die();

// Bitmap array of ASCII characters (0-127)
//
$charmap = array();
for($i=0;$i<128;$i++){
$charmap[] = readCursor(generateChr($i),0,0) ;
}
$charmap[0]='';// Chr(0) != Space

// Make sure the image dimensions are correct FTD uses a 6 x 13 font
// The dimensions should be a multipul of those.
$im = imagecreatefrompng($_FILES['userfile']['tmp_name']);
$dimensions = getimagesize($_FILES['userfile']['tmp_name']);

if(($dimensions[0] % 6 != 0) || ($dimensions[1] % 13 != 0))
die("invalid image");

// Figure out the number of characters
$x = $dimensions[0] / 6;
$y = $dimensions[1] / 13;

// Iterate over each character
for($yy=0;$yy<$y;$yy++){
for($xx=0;$xx<$x;$xx++){
$char = readCursor($im, $yy,$xx);// Return ASCII code
echo chr(array_search($char, $charmap,TRUE));
}
echo "<br>\n";
}

unlink($_FILES['userfile']['tmp_name']);

// Create a single 6x13 character bitmap
function generateChr($char){
$im = imagecreate(6, 13);
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);
imagestring($im, 2, 0, 0, chr($char), $textcolor);
return $im;
}

// Read a 6x13 bitmap @ X Y location
function readCursor($im, $y, $x){
$character = '';
$y*=13;
$x*=6;
for($yy=0;$yy<13;$yy++){
for($xx=0;$xx<6;$xx++){
$character.= imagecolorat($im,$xx+$x,$yy+$y);// Bit Set == 1, Bit Not Set == 0
}
}
return $character;
}
?>
Avatar billede bromer Nybegynder
09. april 2005 - 14:43 #1
den letteste løsning er at pipe opgaven ud til wget, hvis du befinder dig på et unix system.
Avatar billede saybot Nybegynder
09. april 2005 - 14:56 #2
serveren det køre på er windows 2003 så :(
Avatar billede coderdk Praktikant
09. april 2005 - 15:08 #3
Nu gætter jeg bare, men er det noget i den stil du skal bruge:

<?php

  $picurl = 'http://nfo.ftd.nu/?id=331245';
  $cnt = file_get_contents( $picurl );
  $fp = fopen( 'billede.png', 'w' );
  fwrite( $fp, $cnt );
  fclose( $fp );

?>

Her skal billede.png bare være skrivbart for serveren...
Avatar billede saybot Nybegynder
09. april 2005 - 15:17 #4
ja det er sådan... men nu... hvordan skal jeg integrere det så det kommer til at virke
Avatar billede coderdk Praktikant
09. april 2005 - 15:21 #5
Hvad med noget i stil med:

<form action="ftdparser.php" method="get">
    FTD #<input name="ftdid" type="text" size="10"/>
    <input type="submit" value="Lav til tekst" />
</form>
</HTML>
<font face="Fixedsys" size="1">
<hr>
<?PHP

if(empty($_GET['ftdid']) || !is_numeric( $_GET['ftdid'] ))
die("tom eller ikke tal");

// Save img:

  $picurl = 'http://nfo.ftd.nu/?id=' . $_GET['ftdid'];
  $cnt = file_get_contents( $picurl );
  $fp = fopen( 'billede.png', 'w' );
  fwrite( $fp, $cnt );
  fclose( $fp );

// Bitmap array of ASCII characters (0-127)
//
$charmap = array();
for($i=0;$i<128;$i++){
$charmap[] = readCursor(generateChr($i),0,0) ;
}
$charmap[0]='';// Chr(0) != Space

// Make sure the image dimensions are correct FTD uses a 6 x 13 font
// The dimensions should be a multipul of those.
$im = imagecreatefrompng('billede.png');
$dimensions = getimagesize('billede.png');

if(($dimensions[0] % 6 != 0) || ($dimensions[1] % 13 != 0))
die("invalid image");

// Figure out the number of characters
$x = $dimensions[0] / 6;
$y = $dimensions[1] / 13;

// Iterate over each character
for($yy=0;$yy<$y;$yy++){
for($xx=0;$xx<$x;$xx++){
$char = readCursor($im, $yy,$xx);// Return ASCII code
echo chr(array_search($char, $charmap,TRUE));
}
echo "<br>\n";
}

unlink($_FILES['userfile']['tmp_name']);

// Create a single 6x13 character bitmap
function generateChr($char){
$im = imagecreate(6, 13);
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);
imagestring($im, 2, 0, 0, chr($char), $textcolor);
return $im;
}

// Read a 6x13 bitmap @ X Y location
function readCursor($im, $y, $x){
$character = '';
$y*=13;
$x*=6;
for($yy=0;$yy<13;$yy++){
for($xx=0;$xx<6;$xx++){
$character.= imagecolorat($im,$xx+$x,$yy+$y);// Bit Set == 1, Bit Not Set == 0
}
}
return $character;
}
?>
Avatar billede coderdk Praktikant
09. april 2005 - 15:22 #6
Hmm ja den unlink skal nok laves om til:

unlink('billede.png');
Avatar billede saybot Nybegynder
09. april 2005 - 15:23 #7
det ser sq ud til at virke... så skal jeg da lige tjekke hvordan du satte det sammen hehe... tak for hjælpen du!
Avatar billede coderdk Praktikant
09. april 2005 - 15:24 #8
Så lidt :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester