Δυναμική υπογραφή με εικόνα

Μια περιοχή όπου τα μέλη μας μπορούν να βάζουν τα PHP scripts που έχουν φτιάξει και θέλουν να τα μοιραστούν με τα υπόλοιπα μέλη.

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
defkalion
Δημοσιεύσεις: 52
Εγγραφή: 27 Μαρ 2007 01:20
Επικοινωνία:

Δυναμική υπογραφή με εικόνα

Δημοσίευση από defkalion » 03 Δεκ 2007 23:41

Λοιπόν παίρνω αφορμή από ένα παρόμοιο τόπικ στην ίδια κατηγορία, για να σας δείξω πώς μπορείτε με πολύ απλό τρόπο να φτιάξετε μια υπογραφή με οποιαδήποτε εικόνα θέλετε ως βασικό background και δυναμικό περιεχόμενο από ένα απλό text αρχείο.

Δείτε δύο παραδείγματα εδώ:

1. Εικόνα μακρόστενη που "τραβάει" κινηματογραφικές ατάκες από ένα αρχείο txt, και έχουμε ανάγκη το κείμενό μας να οριοθετείται σε διαφορετικές διαστάσεις από αυτές της αρχικής μας εικόνας (πχ έχει περιθώρια πάνω και αριστερά, ενώ δεξιά έχει τη στάμπα που δε θέλουμε το κείμενό μας να καλύπτει):

Εικόνα


2. Εικόνα που τραβάει ταξιδιωτικές ατάκες πάλι από txt αρχείο, μόνο που σε αυτήν εδώ την περίπτωση είναι εντελώς "στεγνό" το κείμενο, κολλημένο στα όρια της εικόνας μας:

Εικόνα


Και στις δύο περιπτώσεις έχουμε την ανανέωση του περιεχομένου τους σε κάθε refresh φυσικά. :)

Πάμε να δούμε τί χρειαζόμαστε για να φτιάξουμε κάτι τέτοιο:

1. Πρόσβαση στον server μας.

2. Μια εικόνα σε οποιαδήποτε μορφή. Πχ random.png που είναι το background μας.

3. Ένα txt αρχείο (πχ random_quotes.txt), στο οποίο έχουμε γραμμένο το περιεχόμενο που θέλουμε να αλλάζει σε κάθε refresh. Προσοχή κάθε content που θέλουμε να εμφανίζεται κάθε φορά, το γράφουμε σε μία γραμμή. Δηλαδή πχ για το παράδειγμά μας το πρώτο, αν έχουμε 10 κινηματογραφικές ατάκες, θα έχουμε ένα txt αρχείο με 10 γραμμές.

4. Φτιάχνουμε ένα αρχείο php, το ονομάζουμε πχ quotes.php και βάζουμε μέσα αυτόν τον κώδικα:

Κώδικας: Επιλογή όλων

<?php
function ImageStringWrap&#40;$im, $font, $x, $y, $string, $color, $maxwidth&#41;
&#123;
   $fontwidth = ImageFontWidth&#40;$font&#41;;
   $fontheight = ImageFontHeight&#40;$font&#41;;

   if &#40;$maxwidth != NULL&#41; &#123;
       $maxcharsperline = floor&#40;&#40;$maxwidth-140&#41; / $fontwidth&#41;;
       $string = wordwrap&#40;$string, $maxcharsperline, "\n", 1&#41;;
     &#125;

   $lines = explode&#40;"\n", $string&#41;;
   while &#40;list&#40;$numl, $line&#41; = each&#40;$lines&#41;&#41; &#123;
       ImageString&#40;$im, $font, $x, $y, $line, $color&#41;;
       $y += $fontheight;
     &#125;
&#125;
header&#40;"Content-type&#58; image/png; charset=UTF-8"&#41;;
$quotes = file&#40;"random_quotes.txt"&#41;;
$string = trim &#40;$quotes&#91;array_rand&#40;$quotes&#41;&#93;&#41;;
$im = imagecreatefrompng&#40;"random.png"&#41;;
$black = imagecolorallocate&#40;$im, 255, 255, 255&#41;;
$font = 'arial.ttf';
ImageStringWrap&#40;$im, 2, 10, 6, $string, $black, ImageSX&#40;$im&#41;&#41;;
imagepng&#40;$im&#41;;
imagedestroy&#40;$im&#41;;
?>
5. Πειράζουμε το .htaccess αρχείο του server μας και γράφουμε την εξής αλλαγή:

RewriteEngine on
RewriteRule ^quotes.png /quotes.php


Και είμαστε έτοιμοι. Πλέον όταν θα καλούμε το quotes.png ο server μας θα το μεταφράζει σε quotes.php και θα εμφανίζει την εικόνα με το περιεχόμενό της να αλλάζει.


6. Διορθώσεις/πειράγματα κειμένου όσον αφορά αποστάσεις από το περιθώριο κλπ:


Στη γραμμή :

$maxcharsperline = floor(($maxwidth-140) / $fontwidth);

ορίζουμε το πλάτος στο οποίο επιτρέπουμε το κείμενο να "απλώνεται"

ενώ στη γραμμή

ImageStringWrap($im, 2, 10, 6, $string, $black, ImageSX($im));

πειράζουμε την απόσταση του κειμένου από τα άλλα περιθώρια, το επάνω και το αριστερά δηλαδή.


Ελπίζω να σας χρησιμεύσει. Αν κάνετε κάποια εφαρμογή βάλτε την εδώ να τη δούμε. :D


Ξαναλέω ότι δεν είναι κώδικας που έχω χτίσει από το μηδέν. Αφορμή ήταν το παρόμοιο τόπικ εδώ στο freestuff που "ρούφαγε" δεδομένα από ένα φόρουμ, και μετά από λίγο διάβασμα και ψάξιμο βρήκα και τα υπόλοιπα. Άρα τα credits στο δημιουργό του αρχικού τόπικ για την ιδέα και τον αρχικό κώδικα, και στους χιλιάδες coders του internet που μοιράζονται τις γνώσεις τους. :)

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27616
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Δυναμική υπογραφή με εικόνα

Δημοσίευση από cordis » 04 Δεκ 2007 00:47

ωραίο. ;) εδώ http://www.freestuff.gr/forums/viewtopic.php?t=16662 είναι και η άλλη έκδοση του mrpc.
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

Απάντηση

Επιστροφή στο “PHP τα δικά μας scripts”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες