Avatar billede simonvalter Praktikant
13. maj 2003 - 15:24 Der er 18 kommentarer og
1 løsning

lav billede fra text

jeg vil have lavet dette
http://gbit.dk/nfo2.png

men får dette

http://gbit.dk/nfo.png

jeg har denne kode og har prøvet med forskellige fonts ...
men det er nok ikke det der er problemet

kan i rette det?

<?
$nfoname=$_GET['nfoname'];
$location="http://www.yoururl.com/nfo/$nfoname";
$lines = file ($location);
foreach ($lines as $line_num => $line) {
  $line=wordwrap($line, 85);
  //$line = str_replace(" ", "&nbsp;", "$line");
//    $line = nl2br($line);
  //$line=str_replace("\n", "", $line);
  $msg = $msg . "" . $line . "\r";
  //$line=substr($line, 0, 85);
  //$msg = $msg . "" . $line . " \r";
}

Header("Content-type: image/png");
class textPNG {
var $font = '/location/to/fonts/luconP.ttf'; //default font. directory relative to script directory.
//var $msg = $lines; // default text to display.
var $size = 8;
var $rot = 0; // rotation in degrees.
var $pad = 10; // padding.
var $transparent = 0; // transparency set to on.
var $red = 0; // white text...
var $grn = 0;
var $blu = 0;
var $bg_red = 255; // on black background.
var $bg_grn = 255;
var $bg_blu = 255;
function draw() {
$width = 0;
$height = 0;
$offset_x = 0;
$offset_y = 0;
$bounds = array();
$image = "";

// determine font height.
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, "W");
if ($this->rot < 0) {
$font_height = abs($bounds[7]-$bounds[1]);
} else if ($this->rot > 0) {
$font_height = abs($bounds[1]-$bounds[7]);
} else {
$font_height = abs($bounds[7]-$bounds[1]);
}
// determine bounding box.
$bounds = ImageTTFBBox($this->size, $this->rot, $this->font, $this->msg);
if ($this->rot < 0) {
$width = abs($bounds[4]-$bounds[0]);
$height = abs($bounds[3]-$bounds[7]);
$offset_y = $font_height;
$offset_x = 0;

} else if ($this->rot > 0) {
$width = abs($bounds[2]-$bounds[6]);
$height = abs($bounds[1]-$bounds[5]);
$offset_y = abs($bounds[7]-$bounds[5])+$font_height;
$offset_x = abs($bounds[0]-$bounds[6]);

} else {
$width = abs($bounds[4]-$bounds[6]);
$height = abs($bounds[7]-$bounds[1]);
$offset_y = $font_height;;
$offset_x = 0;
}

$image = imagecreate($width+($this->pad*2)+1,$height+($this->pad*2)+1);

$background = ImageColorAllocate($image, $this->bg_red, $this->bg_grn, $this->bg_blu);
$foreground = ImageColorAllocate($image, $this->red, $this->grn, $this->blu);

if ($this->transparent) ImageColorTransparent($image, $background);
ImageInterlace($image, false);

// render it.
ImageFtText($image, $this->size, $this->rot, $offset_x+$this->pad, $offset_y+$this->pad, $foreground, $this->font, $this->msg, array("linespacing" => -2.0));

// output PNG object.
imagePNG($image);
}
}
$text = new textPNG;
if (isset($msg)) $text->msg = $msg; // text to display
if (isset($font)) $text->font = $font; // font to use (include directory if needed).
if (isset($size)) $text->size = $size; // size in points
if (isset($rot)) $text->rot = $rot; // rotation
if (isset($pad)) $text->pad = $pad; // padding in pixels around text.
if (isset($red)) $text->red = $red; // text color
if (isset($grn)) $text->grn = $grn; // ..
if (isset($blu)) $text->blu = $blu; // ..
if (isset($bg_red)) $text->bg_red = $bg_red; // background color.
if (isset($bg_grn)) $text->bg_grn = $bg_grn; // ..
if (isset($bg_blu)) $text->bg_blu = $bg_blu; // ..
if (isset($tr)) $text->transparent = $tr; // transparency flag (boolean).
$text->draw();
?>
Avatar billede simonvalter Praktikant
13. maj 2003 - 15:27 #1
marker det første billede så kan i se det .. det er med hvid text
Avatar billede fri-hash Nybegynder
13. maj 2003 - 15:30 #2
jeg kan ikke se nfo2.png, men har du rettet denne linie
$location="http://www.yoururl.com/nfo/$nfoname";
Avatar billede simonvalter Praktikant
13. maj 2003 - 15:31 #3
øhh .. scriptet virker i den forstand .. det er billedet det laver der bliver grimt
du kan se her hvordan det første billede ser ud .. og sådan vil jeg gerne have det
http://www.nforce.nl/nfos/index.php?do=2&id=24269
Avatar billede fri-hash Nybegynder
13. maj 2003 - 15:39 #4
som du måske kan se af mit navn er jeg generelt ikke den store regelrytter, men det ser ikke helt lovligt, forbered dig hellere på kommentarer angående dette i forhold til ekspertens regler .... lav hellere et eksempel hvor du ikke skriver DVDrip, pirated dvd's, osv.

Jeg kan desværre ikke hjælpe, jeg har ikke arbejdet særlig meget med image-funktioner i php
Avatar billede simonvalter Praktikant
13. maj 2003 - 15:42 #5
jep jeg er forberedt på at folk kan bitche .. men det har intet med det at gøre .. for det første er nfo's ikke ulovlige og for det andet er det bare et godt eksempel på ascii .. som ligesågodt kunne være et billede af en ko ;)
Avatar billede jakoba Nybegynder
13. maj 2003 - 15:51 #6
brug courier som font, og lad være med at bruge alle de specialtegn der ser gudved hvordan ud når dit billede vises med et andet alfabet. Hold dig til standardalfabetet a..z, A..Z, 0..9, og måske nogle af de mest almindelige tegn (+-_.,;:()/\"'*[]<>)

mvh JakobA
Avatar billede simonvalter Praktikant
13. maj 2003 - 15:54 #7
ja ... men det er problemet .. ascii art bliver lavet med specielle tegn .. uden dem kan du ikke lave det ...
Avatar billede simonvalter Praktikant
13. maj 2003 - 15:56 #8
Ü      ÞÝ      Ü
                                ßÛÜÜ ÜÛÛÜ ÜÜÛß
        ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ ÛÛÛÛÛÛÛÛÛÛ ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
      ÜÛß                        ÛÛÛÛÛÛÛÛÛÛ                          ßÛÜ
    ÛÛÝ                          ß      ß                            ÞÛÛ


bliver feks til http://gbit.dk/bla.jpg
.. dette kan man vist ikke med a..z, A..Z, 0..9 ;)
Avatar billede jakoba Nybegynder
13. maj 2003 - 16:02 #9
loadet >>  pladder. hele fidusen med ascii art er at det laves med almindelige skrivemaskinebogstaver.

                              .,,,,,,,,,,,,
                        ,;%%%%uuuuuuuuuuuuu%%%\
                      /%%%%%uuuu====####uuuuuu%%%%
                    /%%%%%uuuu.....===###uuuuu%%%%%%
            , '''''\%%%%%uuu....##.===##uuuu%%%%%%%%
            ,'''''''')####\%u....../==#/uuu%%%%%%%%%%%
            ,'''''/#########\%mmmmmmmmmmmmm%%%%%%%%%%%;
            #\''/##########(mmmmmmmmmmmmmmmmnu%%'%%%%%%%
            ###############(mmmmmmmmmmmmmmmmmnuu%%'%%%%%%;
            u\###########/ (mmmmmmmmmmmmmmmmmmnuu%%'%%%%%%%%
          uuuuuEEE        \mmmmmmmmmmmmmmmmmnuuu%%'%%%%%%%%%
          uuuuuEEE    .:::,#u,mmmmnnmmmmmmmmmnuuu%%;; %%%%%%%%%
            uuuuuu\##\:::::##uuummmmmmmmmmmmmmnuu%%;;;; :...%%%%%%
              uuuuu\#######/uuuuuuuuuu,mmmmmmnu%%...;;;  ::...%%%%
                  \uuuuuuuuuuuuuuuuuuuuuuuu,mmnu/ \...;;;  ::...%%%
                    >####&&################<%%%%    \;;;/    ::...%%%
                (#####&&&################%%%%%%%              ::..%%%
            (######&&&&##############(%%%%%%%%%%                ::%/
          (####&&&&&&#############(%%%%%%%%%%%%%
        (#######&&&&&############(%%%%%%%%%%%%%%%%
        (#########################(%%%%%%%%%%%%%%%%%%
        (# (######################(%%%%%%%%%%%%%%%%%%%%
          (#######################(%%%%%%%%%%%%%%%%%%%%%
          %%%(#####################(%%%%%%%%%%%%%%%%%%%%%%%
        %%%%%%(####################(%%%%%%%%%%%%%%%%%%%%%%%
        ;%%%%%%; (#################n'%%%%%%%%'%%%%%%%%%%%%%%%
      (%%%%%%%(  ;%nn############nn'%%%%%%%%'%%%%%%%%%%%%%%%%
        ;%%%%%%%  %%%nnnnnnnnnnnnn'%%%%%%%%%'%%%%%%%%%%%%%%%%%%(@@@)
        \%%%%%;  %%%%nnnnnnnn'%%%%%%%%%'%%'n%%%%%%%%%%%%%%%%%(@@@@@)
          (%(%/  %%%%%nnnnnn'%%%%%%%%%%%'nnnn%%%%%%%%%%%%%%%%(@@@@@@
                %%%%%%nnnnnn'%%%%%%%%'nnnnnnnn%%%%%%%%%%%%%%(@@@@@@@
                %%%%%%%nnnnnnn(%(%)nnnnnnnnnnnn%%%%%%%%%%%%%(@@@@@@@)
            .,;%%%%%%%%nnnnnnnnnnnnnnnnnnnnnnn%%%%%%%%%%%%%(@@@@@@@@
    ,nnnnnnn%%%%%%%%%nnnnnn)nnnnnnnnnnnnnnn%%%%%%%%%%%%%%(@@@@@@@)
  /nnnnnnnnnnn%%%%%%nnnnnnnnnnn)nnnnnnnnn%%%%%%%%%%%%%%%/  (@@@@)
(uu(uuuuuuuuuuuuuuuuuuuuuuuuuuu/  (uu;;;;;;;;;;;uu)
                                    (uu;;;;;;;;;;uu)
                                      (uuuuuuuuuuuuu)
                                        (uu)(uu)(uu)    Susie Oviatt

mvh JakobA
Avatar billede simonvalter Praktikant
13. maj 2003 - 16:05 #10
ok så prøv at lave dit om til et billede eller vis det med en terminal font ..
måske kan dette eksempel vise det bedre ... sådan får du det ikke til at se ud
så hedder det måske ansi art .. jeg ved det ik ..

http://gbit.dk/test.txt
http://gbit.dk/test.jpg
Avatar billede simonvalter Praktikant
13. maj 2003 - 16:07 #11
selvom jeg smider det du pastede i en text editor i terminal font kan du stadig se de orginale tegn .. det ser da ok ud .. men det giver ikke den samme effekt ..
Avatar billede jakoba Nybegynder
13. maj 2003 - 16:18 #12
Jeg beklager, men det bliver altså kun til et billede i retning af http://gbit.dk/bla.jpg hvis den der kikker anvender samme alfabet som dig (det er vist et gammelt MSDOS alfabet, de gjorde det i de der '6 pixels pr bogstav' tegn)

når jeg kikker på http://gbit.dk/test.txt får jeg bare en masse U'er med umlaut og lignende som i: loadet 13/05-2003 15:56:58

Hvis du hitter ud af hvilket alfabet du bruger kan du specificere det i din html-fil. Det er ikke usandsynligt at de brugere der kommer og kikker også har det alfabet.

Men courier i fast bredde, det kan du roligt regne med at de har :-))

mvh JakobA
Avatar billede simonvalter Praktikant
13. maj 2003 - 16:35 #13
ok well der kom jeg ikke meget videre desværre ..
alt ascii/ansi art vil være lavet med alle de der "mærklige" tegn .. og billedet vil jo blive vist ens ligemeget hvilke fonts folk har instaleret ..
Avatar billede jakoba Nybegynder
13. maj 2003 - 17:17 #14
Jeg kan ikke finde mange 'mærkelige tegn' her: http://www.chris.com/ascii/
Avatar billede simonvalter Praktikant
13. maj 2003 - 17:56 #15
nej men du kan sq da se det med dine egen øjne at det ikke er det samme som de eksempler jeg har givet ...
jeg ville ikke have en diskussion om hvad ascii er ..
det jeg ville have var hjælp til hvordan man laver dette ..
tag og kig på nforce.nl vcdvault.nl og mange andre .. det er lykkedes for dem at lave det ...
at du så mener det ikke er ascii har ikke ret meget med sagen at gøre .. så kalder vi det ansi som det så nok er ud fra hvad jeg kan se på acheron.org
Avatar billede jakoba Nybegynder
13. maj 2003 - 18:13 #16
Jeg kan godt se at du kan lave kønnere billeder på den måde.
Du kan lave endnu flottere billeder med et paint program.
men det er ikke ascii art du laver.

Jeg synes også at 'jabberwocky' er et bedre digt en noget limerick. Men det betyder ikke at jabberwocky er et limerick. Det overholder overhovedet ikke reglerne for limericks.

mvh JakobA
Avatar billede simonvalter Praktikant
17. maj 2003 - 18:20 #17
lukker .. ingen svar at finde her :/
Avatar billede simonvalter Praktikant
27. maj 2005 - 01:20 #18
nå efter et par år fik jeg lyst til at kigge på problemet igen. Du havde helt ret i at ASCII ikke har disse characters.. men ascii artists bruger ofte specielle characters (også brugt i ansi art) i nfo filer fra codepage 437 .. så det er nok mere korrekt ansi art men bliver også omtalt som ascii art.
http://en.wikipedia.org/wiki/NFO
http://en.wikipedia.org/wiki/Codepage_437
Avatar billede simonvalter Praktikant
27. maj 2005 - 01:27 #19
efter jeg fandt ud af dette var det ganske simpelt at få vist i java skal readeren indlæse som codepage 437 .. men fontstørrelse og font har inflydelse på resultatet.

Courier New str >= 9
og
Lucida Sans Typewriter = 9

virker efter hensigten
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