Pomoc - Szukaj - Uytkownicy - Kalendarz
Pena wersja: [PHP] -> przycisk (dziwne znaki? - kodowanie?)
Forum PHP.pl > Forum > Przedszkole
rafal_problem
Kod
Cze,

Mam taki dziwny problem z kodem - kod z roz.22 vademecum profesjonalisty.  Najpierw miaem problem z czcionk ale sobie poradziem teraz pokazuje mi dziwny tekst.

[code]<?php
// sprawdzenie, czy dostpne s odpowiednie dane zmiennych
// zmienne to tekst_przycisku oraz kolor

$tekst_przycisku = $_REQUEST['tekst_przycisku'];
$kolor = $_REQUEST['kolor'];

if (empty($tekst_przycisku) || empty($kolor))
{
  echo 'Stworzenie obrazka niemoliwe - formularz wypeniony niepoprawnie';
  exit;
}

// utworzenie obrazka o prawidowym tle oraz sprawdzenie wielkoci
$ob = imagecreatefrompng($kolor.'-przycisk.png');

$szerokosc_obrazka = imagesx($ob);
$wysokosc_obrazka = imagesy($ob);

// przyciski musz mie 18-pikselowy margines od krawdzi
$szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 18);
$wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 18);

// Obliczenie pasujcego rozmiaru czcionki i odpowiednie jego zmniejszenie
// Rozpoczcie od najwikszego rozmiaru, ktry intuicyjnie pasowaby do przyciskw
$rozmiar_czcionki = 33;

// Trzeba wskaza GD2, gdzie znajduj si czcionki
putenv('GDFONTPATH=C:\\Windows\\Fonts');
$nazwa_czcionki = 'arial.ttf';

do
{
  $rozmiar_czcionki--;

  //obliczenie rozmiaru tekstu przy tym rozmiarze czcionki
  $bbox=imagettfbbox($rozmiar_czcionki, 0, $nazwa_czcionki, $tekst_przycisku);

  $tekst_prawy = $bbox[2];  //prawa wsprzdna
  $tekst_lewy = $bbox[0];  //lewa wsprzdna
  $szerokosc_tekstu = $tekst_prawy - $tekst_lewy; // jaki szeroki?
  $wysokosc_tekstu = abs($bbox[7] - $bbox[1]); // jaki wysoki?

} while ($rozmiar_czcionki > 8 &&
        ($wysokosc_tekstu > $wysokosc_obrazka_bez_marginesow ||
         $szerokosc_tekstu > $szerokosc_obrazka_bez_marginesow)
       );

if ($wysokosc_tekstu>$wysokosc_obrazka_bez_marginesow ||
    $szerokosc_tekstu>$szerokosc_obrazka_bez_marginesow)
{
  // aden moliwy do odczytania rozmiar czcionki nie pasuje
  echo 'Wprowadzony tekst nie pasuje do przycisku.<br />';
}
else
{
  // odnaleziono pasujcy rozmiar czcionki
  // teraz naley obliczy jego wsprzdne

  $tekst_x = $szerokosc_obrazka/2.0 - $szerokosc_tekstu/2.0;
  $tekst_y = $wysokosc_obrazka/2.0 - $wysokosc_tekstu/2.0;

  if ($tekst_lewy < 0)
      $tekst_x += abs($tekst_lewy);  //Dodanie wspczynnika do lewej pozycji

  $nad_linia_tekstu=abs($bbox[7]); // jak wysoko nad podstaw?
  $tekst_y += $nad_linia_tekstu;  //dodanie wspczynnika podstawy

  $tekst_y -= 2; // wspczynnik dostosowania do ksztatu szablonu

  $bialy = imagecolorallocate($ob, 255, 255, 255);

  imagettftext($ob, $rozmiar_czcionki, 0, $tekst_x, $tekst_y, $bialy, $nazwa_czcionki,
               $tekst_przycisku);

  Header('Content_type: image.png');
  imagepng($ob);
}

imagedestroy($ob);
?>


Pokazuje mi takie co po wykonaniu:
PNG  IHDRCk)IDATx]K$W/Yn]nڲ56Y@ X Yi4 ְDb!!X ƃGicWU~"{,nītt*"e;y4hQ)S1p#׫7`]+1=qBsN}܅EQA )dfk*,"0F"r&c1@0 8$Q" =K٣ι,<BTؙKmdbiggrin.gifr0<MiqEQEcB֖eQu,A0Izw67KTNBʢa,$fXDTA99@EY&Iia^ȫSUU㲪 Ͻi.Cm "&nS9KC B"ΡPT̳G(ieZHA^Bo8V @oYHQ p 8&8R4*,22h,I&?++(;4MCX܍B_霔ej@cq "0zTj DX:XX?sS=c:ݮWN#"RUfe_ަ8! :aX ?hsO JD:Gei8˿&O?nEo)Ʉ"/µ)N-CeR9(\Zbk[>= BgF:T9DCiS,Φ'f8x^,ߏY,Z)T*\)"̨S1C71X]]tneoaH]ڋ3Ea)?y QL!L8FUqQIQJa[ Dsz :ǰ*'Q$?sݨwC3)Pei-3@?. \,*+ꑶDf xOƇ?7 O4)ҁp3c<)e<QU !|J!ow8d!1Df,13L@C 'N@?cRhu$<2AX\/EBc\NkR36_X^ ݩ\?10 Q`MBYDc$?/4|h<)pyvi?b _q1gr:ej�áw?h6]ߘx="" ǔ9="" ire:�ri="" rf$dŋˉ1yx,ΐb1]\ytjjea]es="" m5="" c�="" "qr$;ytem,"쬩в="" j:="" jc="" hb2�buh8lieiuq<y@1q溢t="wWDKKo">Q%]]MWWz|WޯǙ9Ά?hJZ\XTU]rwN`i:WDH@[jOڞmv˟̾g/EZ〢,U)r,4tRh΢_pSnJw= }- 8{A-"*m94骮&7eIA-yup[~ oO[_zKZ&E}h [Xm>M;[+/K8}8}zO<|z\O8{E#'޵H<2gtsתTB!j7-S3x4:/(zkG?G_\ԍ u 5SjF? ~c6w+kkԔ+um6 1틨{au+Tu?i.v[ۭ֯[ɟSչs85^m›ct$gW͊7Ng6"fW<3TK}ۚ'n2/ +nORHԘ<44\-]S"Ƙ)-1hMU޵h{mC83iZ5ړoОV`+o%H}\ӫfK!Ҵf MoyFfOCmCRe2 i7ף3]c.V[}3[11& a;W7uM+ vX ?Bu\"̤&P4qu=QA|^mJ!w!*JXg0 F&39sDp"ȉy~h|-)lA#Ht\o&f聈cEmh 04Y*b[Mڽ܆[&P>* 8")A ciaqyT\\#R9N^qP{E,PU@%RT"\.."ʊmRK0L :QWnAn.P?PH\"%P" [ 0L`ӟ~{\ Q43uUcX_޷jiP )E&̅H٘C]xY&I{Kg3qQ8P>D_0ܖفz\}>nwlK[7F tʥ~fYP0$ɢhϚW_śor/4jѹ5IE" >`Ҵen7scool.gifIYT $X}779Q">{[& k$@HB>~JtNzg(R_UHc'Fllpmu_R~/"̋k@ׄBC]xAz^痥H!$I$˲x<)pyvi?b>[/code]

C to jest? Nie wiem, bdw mi nie wywala.
lobopol
to jest tekstowa zawarto obrazka, zwalony header masz

powinno by
  1. header('Content-Type: image/png');
rafal_problem
Cytat(lobopol @ 31.12.2011, 11:28:22 ) *
to jest tekstowa zawarto obrazka, zwalony header masz

powinno by
  1. header('Content-Type: image/png');


Dziki dziaa, mam jeszcze takie pytanie do tego przykadu. Czy wiesz jak zrobi by ten przycisk dziaa na zdarzenie click?
lobopol
Niezbyt rozumiem pytanie, ale to co tu wywietlasz to jest obrazek. Nic do niego nie dopiszesz. Jeeli zrobiby na normalnej stronie:

  1. <script>function jakasfunkcja(){alert('a')}</script>
  2. #przycisk{
  3. background:url('generujobrazek.php?tekst_przycisku=aaa&kolor=kolor');
  4. width:szeroko;
  5. height:wysoko;
  6. border:0;
  7. }
  8.  
  9. <input onclick="jakasfunkcja()" type="button" id="przycisk"/>

to mgby tak to zrobi
rafal_problem
Cytat(lobopol @ 31.12.2011, 11:51:31 ) *
Niezbyt rozumiem pytanie, ale to co tu wywietlasz to jest obrazek. Nic do niego nie dopiszesz. Jeeli zrobiby na normalnej stronie:

  1. <script>function jakasfunkcja(){alert('a')}</script>
  2. #przycisk{
  3. background:url('generujobrazek.php?tekst_przycisku=aaa&kolor=kolor');
  4. width:szeroko;
  5. height:wysoko;
  6. border:0;
  7. }
  8.  
  9. <input onclick="jakasfunkcja()" type="button" id="przycisk"/>

to mgby tak to zrobi


Dziki ju rozumiem.
To jest wersja lo-fi gwnej zawartoci. Aby zobaczy pen wersj z wiksz zawartoci, obrazkami i formatowaniem prosz kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.