[PHP] Zmina obrazka na serverku

0

Witam mam takie pytanie czy da rady zrobic w php taki skrypt ktory by na serverku np. zmienial nazwe pliku
np. mam w folderku grafa1.jpg grafa2.jpg i grafa3.jpg
kazdy z tych obrazkow ma te same wymiary lecz calkiem inny wyglad
chce by mi skrypt zmienial obrazek grafa1.jpg na grafa2.jpg
tak bym mial np. link www.web.pl/grafa1.jpg wchodze o godzinie 14.30 i mam obrazek grafa1 wchodze o godzinie 14:35 na www.web.pl/grafa1.jpg i mam juz zmieniony obrazek np. ten grafa2.jpg
chyba wiecie o co mi chodzi chce by ten obrazek mial tak jakby update co dany czas taka petla tak bym mial jeden link i co jakis czas zmieniany obrazek

da sie takie cos zrobic
prosze was o pomoc

0
asadipl napisał(a)

da sie takie cos zrobic

w samym PHP nie, trzeba by skrypt podpiac pod crona (man crontab)
a w php skorzystac z funkcji rename()

druga opcja, jesli masz biblioteki GD wyswietlaj obrazki przez skrypt w zaleznosci od sprawdzonej godziny (http://pl2.php.net/gd)

0
piechnat napisał(a)
asadipl napisał(a)

da sie takie cos zrobic

w samym PHP nie, trzeba by skrypt podpiac pod crona (man crontab)
a w php skorzystac z funkcji rename()

druga opcja, jesli masz biblioteki GD wyswietlaj obrazki przez skrypt w zaleznosci od sprawdzonej godziny (http://pl2.php.net/gd)

a ty jak zrobiles swoj podpis?
http://piechnat.iglu.cz/tools/syg/

0

można zrobić nie zmianę nazwy tylko w zależności od godziny:

Header('Location: 1.jpg');

podpis piechnata to właśnie skrypt php
łatwiej odwołać się do skryptu php który odeśle do odpowiedniego obrazka niż do obrazka który ma się sam zmieniać

ten skrypt:

<?php
$g=(int)date('H');
$obrazek='1.jpg';
if($g<8) $obrazek='1.jpg'; else
 if($g<16) $obrazek='2.jpg'; else
  if($g<24) $obrazek='3.jpg';

Header('Content-type: image/jpeg');
$plik=fopen('./'.$obrazek,'r');
while(!feof($plik)) echo fgets($plik,1024);
fclose($plik);
?>

powinien teoretycznie przed 8: 00 wyświetlić 1.jpg, przed 16: 00 wyświetlić 2.jpg a przed 24: 00 - 3.jpg ale to jest tylko zarys jak mniej/więcej funkcja powinna wyglądać

można to zrobić też przy Header: Location tak jak pisałem wcześniej ale wtedy user może podejrzeć nazwę obrazka na serwerze - skąd jest pobierany a tutaj nie ma on już takiej możliwości

możesz jeszcze dodać takie nagłówki:

header("Content-Disposition: attachment; filename=grafika.jpg");
// jak ktoś wybierze "Zapisz obraz jako" czy coś w ten deseń to zapisze mu się jako obrazek o nazwie "grafika.jpg" a nie jako np "index.php" (powinien)

header("Expires: Mon, 26 Jul 1997 0500 GMT");
header("Last-Modified: ".gmdate("D, d M Y Hs")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
// przeglądarka nie powinna po tych nagłówkach szukać obrazka w cache tylko zawsze pobrać nową wersję

header('Content-Length: '.filesize($obrazek));
// przy pobieraniu będzie widać pasek postępu bo przeglądarka czy coś dostanie info ile obrazek zajmuje

0

Adamo zrobilem tak

<?php $g=(int)date('H'); $obrazek='1.jpg'; if($g<17) $obrazek='1.jpg'; else if($g<18) $obrazek='2.jpg'; else if($g<19) $obrazek='3.jpg';else if($g<20) $obrazek='4.jpg'; Header('Content-type: image/jpeg'); $plik=fopen('./'.$obrazek,'r'); while(!feof($plik)) echo fgets($plik,1024); fclose($plik); ?>

zapisalem ten kod jako image.php wstawilem na http://members.lycos.co.uk/mitrowebsite/image.php
mykanlem tam 4 pliki jpg o tych samych rozmiarach

wchodze na strone i wywala mi taki komunikat Obrazek "http://members.lycos.co.uk/mitrowebsite/image.php" nie może zostać wyświetlony, ponieważ zawiera błędy.

Prosze o pomoc..
I mam jeszcze pytanie jak zrobic by na jpg byl pokazywana moj aktualny status z gg

0

wstaw może na inny serwer bo może tripod wrzuca reklamy do pliku z obrazkiem

albo skorzystaj z tej pierwszej metody:

Header('Location: '.$obrazek);

co do statusu gg - wstawić słoneczka na istniejącego jpega to musiałbyś się bawić biblioteką GD - ja proponowałbym utworzyć osobne trzy jpegi dla dostępny/niedostępny/zaraz wracam i ew. dla błędu jeszcze:

<?php
$plik=file('http://status.gadu-gadu.pl/users/status.asp?id=1234&styl=2');
$plik=rtrim($plik[0]);
if($plik=='1') $obrazek='niedostepny.jpg'; else
if($plik=='2') $obrazek='dostepny.jpg'; else
if($plik=='3') $obrazek='zarazwracam.jpg'; else
  $obrazek='blad.jpg';
?>
0

to z php obrazki sie nie wyswitlaja prawidlowo na forum

mozna uzyskac taki efekt :

http://www.sloganizer.net/en/style3,MITRO.png
takie cos mi dziala ale nie z php bo ja to zamieszam na innym forum


a wiecie jak uzyskac taki efekt
http://www.sloganizer.net/en/style3,MITRO.png na swojej wlasnej stronie tak bym mog dac do podpisu na innym forum w takiej formie [img]adres do pliku .png ktory sie zmienia [/img] - nie che by byl to plik gif tylko nie weim jakis skrypt jak na tej stronie
mam kilka plikow png w folderku i one mi sie zmieniaja wiecie o co chodzi
prosze was o pomoc

0
AutorTegoPOSTU napisał(a)

coś

mógłbyś to wszystko przepisać ?
tylko tym razem daj parę przecinków i kropek bo dopiero na końcu postu zobaczyłem że to chyba miało być pytanie a nie stwierdzenie

0

sorry ale teraz prosciej
chce miec taki efekt http://www.sloganizer.net/en/style3,MITRO.png na swoejej stronie

0

no to jest właśnie skrypt PHP z rysowaniem (biblioteka GD) i wszystko skonfigurowane tak że np www.costam.pl/sas,fdsf.png to tak naprawdę coś w stylu www.costam.pl/skrypt.php?styl=sas&imie=fdsf&format=png

0

no dobra spox ale jak napisac taki skrypt
bardzo prosze o pomoc

0

masz tu najprostszy przykład, wypisuje text ze zmiennej GET "text" na rozciągniętym obrazku z pliku "tlo.jpg":

<?php

if(isset($_GET['text'])) $text=$_GET['text']; else $text='Nie ma';
$x=300;
$y=50;

$text='To jest text: '.$text;

$obrazek=imagecreatetruecolor($x,$y);
$bg=imagecolorallocate($obrazek,255,255,255); // 255,.. - RGB koloru tła
imagefilledrectangle($obrazek, 0, 0, $x+1, $y+1, $bg);

$img=imagecreatefromjpeg('tlo.jpg'); // obrazek na tle
imagecopyresized($obrazek,$img,0,0,0,0,$x+1,$y+1,imagesx($img),imagesy($img));
imagedestroy($img); // zniszcz z pamięci obrazek tła

$kolor=imagecolorallocate($obrazek,0,0,169); // kolor textu
imagestring($obrazek, 3, 10, 10, $text, $kolor); // jakiś text

header("Content-type: image/png");

imagePNG($obrazek);
imagedestroy($obrazek);
?>

w pliku PHP nie może być nic poza skryptem PHP
teraz otwórz manual i pomyśl - możliwości są nieograniczone i można zrobić wszystko, jak chcesz żeby to nie miało rozszerzenia PHP tylko PNG to poczytaj o mod_rewrite - na darmowych serwerach raczej możesz zapomnieć o tym

0

Dzieki Adamo za ten kod - dziala ;D
no ale z tym ze php na png zrobic to nie daje rady
bylem w menualu w wersji angielskiej a takze polskiej
szukalem na google i na kilku forach ale nie znalazle konkretnego tematu zwiazanego z problemem
kombinowalem ale nie wychodzilo

moze mi ktos pomoc
Adamo jesli mozesz to prze cie
widze ze sie na tym bardzo dobrze znasz

0

musisz mieć hosting który pozwala na wgranie .htaccess - np 100webspace.com pozwala na to, lub najlepiej jakiś płatny

tworzysz plik .htaccess (bez rozszerzenia - to jest nazwa pliku cała z kropką na początku tylko)

i wpisujesz w nim:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule obrazek/([^.]+)?.png$ /obrazek.php?text=$1

i uploadujesz na serwer ftp (nie przejmuj się jak po wgraniu nie będziesz go widział w kliencie FTP)

po tej operacji wpisanie:

www.twojastrona.costam.pl/obrazek/moj_nick.png

spowoduje tak naprawdę otwarcie skryptu:

www.twojastrona.costam.pl/obrazek.php?text=moj_nick

możesz wynik tych operacji przetestować pod adresem:

http://jackow.farvista.net/obrazek/text.png (gdzie "text" to tekst który można zmieniać - tak naprawdę folder "obrazek" na serwerze w ogóle nie istnieje)

1 użytkowników online, w tym zalogowanych: 0, gości: 1