Pereiti prie turinio

Demotyvacijos PHP+GD scriptas


Rekomenduojami pranešimai

Prireikė pasidaryti demotyvacinių paveikslėlių generavimą ir mačiau čia temą, kad kažkas irgi ieškojo, tai jei kam dar reiks atiduodu. :)

 

http://www.cmo.lt/gd/demo.php?f=b.jpg&t=Pavadinimas&x=tekstas

http://www.cmo.lt/gd/demo.phps

 

Vėliau reiks dar padaryt, kad priimtų ne vien jpeg nuotraukas ir, kad galimybė būtų pasirinkti galutinio vaizdo formatą (png, jpg ir t.t.). Ir dar reik padaryt, kad tekstą skeltu automatiškai eilutėmis. Šito nesugalvojau, dar kaip. Gal kas minčių? :) Problema su nustatymų kada skelti. :)

 

P.S. pirmas rimtesnis darbas su GD, neskaitant forumo parašų, tad pykt nereik. ;)

 

Update:

* Padarytas pasirinkimas kokio formato paveikslėlį gražint.

* Pavadinimas ir tekstas skeliami į eilutes.

* Pakeistas TTF fontas į fixed-width "Monofonto".

 

Tik va su skėlimu nežinau ar viską gerai padariau. :) Gal galima buvo gudriau ką sugalvot.

 

// i eilute mazdaug telpa 25 simboliai
if(strlen($title) > 25) { 

$zodziu_list = explode(" ", $title);

$kiek = 0;

// suskaiciuojiu kiek zodziu telpa i 25 simbolius (skelt per simbolius ne kazin kaip atrodytu)

foreach ($zodziu_list as $zodis) { 

$kiek++;
$kiek_zodziu .= $zodis;

if(strlen($kiek_zodziu)+($kiek-1) > 25) {
$kiek = $kiek-1;
}

}

if($kiek > 1) { 

// Sukuriu pirma eilute

for($i=0; $kiek > $i; $i++) {

if($i > 0) { $tarpas = " "; }

$title_one .= "$tarpas$zodziu_list[$i]"; }
// is replace'inu pirma eilute is originalaus kintamojo taip padarydamas antra eilute.
$title_two = str_replace("$title_one ","",$title); } else {

// jei tekstas vienas zodis, tada skeliam pagal raides 

$title_one = substr($title,0,25);
$title_two = substr($title,25);

}

 

Gal kas protingiau patars? :)

 

Donwload: http://www.cmo.lt/gd/demo_v0.2.zip

Redagavo TheChosenOne
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Skėlimo atveju naudok width-fixed font'ą ir paskaičiuok kiek raidžių telpa į eilutę. Jei nenori naudoti fixed-width, gali pasirašyti funkciją, kuri suskaidytų paprastai:

function ...($input,$plotis){
//sudarai raidžių ploto sąrašą:
$saraselis=array('a'=>10,'b'=>10 <...>, 'i'=>3, <...>, 'w' => 15, 'A'=> 10,'Z'=>10)
$raides=0
$input=explode($input,'');
$newinput=array()
//tada einame per kiekvieną raidę:
foreach ($input as $raide){
$raides .= $saraselis[$raide]
if ($raides<$plotis){
//pripakuojam raides prie newinput[0]
}elseif($raides<$plotis*2){
//pripakuojam kitas raides prie newinput[1](neužmiršti nuimti tai, ką jau pridėjai prie newinput[0]
}else{
//pripakuojam dar kitas raides prie newinput[2](neužmiršti nuimti tai, ką jau pridėjai prie newinput[0] ir [1]
}
}
}

 

Viskas gan normaliai tik pamačiau keletą tokių gan kvailų išsireiškimų pavyzdžiui:

$kintamasis="$kintamasis2"

1. Kam priskirti dar vieną kintamajį? Nesąmonė, bereikalingas RAM naudojimas.

2. Kabutės - čia jos visiškai nereikalingos :)

Redagavo nagisa
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Viskas gan normaliai tik pamačiau keletą tokių gan kvailų išsireiškimų pavyzdžiui:

$kintamasis="$kintamasis2"

1. Kam priskirti dar vieną kintamajį? Nesąmonė, bereikalingas RAM naudojimas.

2. Kabutės - čia jos visiškai nereikalingos :)

 

1.

   $picture_width=$naujas_x;  
   $picture_height=$naujas_y;   

 

Pvz čia? Tai čia testuojant pati principą viso skripto, buvo nustatyti default dydžiai. Kai viskas veikė, padariau aukščiau paveikslėlio dydžio keitimą, po to pakeičiau į kintamuosius jau po viso dydžio pakeitimo pažiūrėt kaip veikia ir negrižau matomai ten daugiau. :)

 

2. Čia įprotis greičiausiai :)

 

Dėkui už pastabas :) Tavo pasiūlymą peržiūrėsiu dėl skėlimo. Galvojau, kad reik daryt kažką su raidžių pločiais. Bet tikėjaus, kad gal koks paprastesnis būdas bus. :)

 

 

Neveikia download linkas. :lol:

 

Man veikia O.o

Redagavo TheChosenOne
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...