Computer Hardware Forum - TweakPC

Computer Hardware Forum - TweakPC (https://www.tweakpc.de/forum/)
-   Programmiersprachen (https://www.tweakpc.de/forum/programmiersprachen/)
-   -   [PHP] Dynamisches Bild / Random Picture (https://www.tweakpc.de/forum/programmiersprachen/68706-php-dynamisches-bild-random-picture.html)

qLx 17.02.2009 13:31

[PHP] Dynamisches Bild / Random Picture
 
Hallo liebe Community

Wie kann man ein Bild auf einem Server ( z.B: [URL]http://xxxxxxx.de/images/random/Bild.jpg[/URL] ) ein dynamisches Bild ablegen. Also ich möchte 1-5 Bilder in einen Ordner stecken und wenn ich ein Bild einfügen möchte soll immer ein anderes beim "reload" erscheinen. PHP möglich.

[php]<?php
$path = "images2/random/";
$dir = opendir($path);
while($dat = readdir($dir)){
if($dat != "." && $dat != ".." && (substr($dat,-3) == "jpg" || substr($dat,-3) == "gif" || substr($dat,-3) == "png" || substr($dat,-3) == "bmp" || substr($dat,-3) == "JPG")){
$img_array[] = $dat;
$amount++;
}
}
$num = rand(0,$amount-1);
$actual = $img_array[$num];
echo " <img src=\"".$path.$actual."\" alt=\"Random Picture $i\" />\n";
?> [/php]So schaut es aktuell bei mir aus. Aber dann kann ich ja nur auf das PHP Script verlinken!? Ich möchte also über "Grafik einfügen" [URL]http://xxxxxxx.de/images2/random/Bild.jpg[/URL] eingeben können und das soll sich dann beim reload der Page neu laden.

MfG :Q123::L123::X123:

Exit 17.02.2009 14:10

AW: [PHP] Dynamisches Bild / Random Picture
 
Irgendwie ist mir jetzt absolut unklar, was Du genau machen willst.

Dein PHP Code greift ja schon auf einen Ordner zu, sucht sich ein Bild raus und bindet diese in ein Html Image Code ein.

Jetzt weiß ich nicht, was Du mit "Bild einfügen" meinst - und was er dann damit machen soll?

qLx 17.02.2009 14:16

AW: [PHP] Dynamisches Bild / Random Picture
 
Wenn ich den Link [url]http://xxxxxxxxxxx.de/images/radnom/Picture.jpg[/url] anklicke/öffne soll eine Datei mit dem Namen Picture.jpg auf eines von 5 verschiedenen Bildern verweisen. Also, dass sich bei jedem reload der Page ein anderes von 5 Bildern aufbaut.

Exit 17.02.2009 14:19

AW: [PHP] Dynamisches Bild / Random Picture
 
[quote=qLx;607585]Wenn ich den Link [URL]http://xxxxxxxxxxx.de/images/radnom/Picture.jpg[/URL] anklicke/öffne soll eine Datei mit dem Namen Picture.jpg auf eines von 5 verschiedenen Bildern verweisen. Also, dass sich bei jedem reload der Page ein anderes von 5 Bildern aufbaut.[/quote]

Häh??

Tschuldigung - aber ich verstehen kein Wort. :sorry:

qLx 17.02.2009 14:47

AW: [PHP] Dynamisches Bild / Random Picture
 
Es ist so schwer zu erklären. Also....

Ich möchte gerne, dass beim öffnen von diesem LINK : [url]http://www.cultureby.com/photos/uncategorized/2008/02/27/bil.jpg[/url] (Nur ein Beispiel) Immer ein anderes Bild erscheint.

bil.jpg = Picture1.jpg , Picture2.jpg, Picture3.jpg usw.

Exit 17.02.2009 15:32

AW: [PHP] Dynamisches Bild / Random Picture
 
OK - das ist aber nicht so ohne weiteres möglich!

Der Browser greift direkt auf das Bild zu und zeigt es an. Somit gibt es nur 2 Möglichkeiten Deinen Wunsch zu bewerkstelligen.

1. Ein Serverscript, welches das Bild aller 1-2 Minuten durch ein anderes ersetzt - aber damit bekommste nicht jedesmal ein neues - sondern eben nur aller 1-2Minuten. Sowas wird recht häufig bei Webcam Bildern verwendet.

2. Du baust einen Handler, welcher statt dem Bild losläuft. Auf Deutsch - das Bild "Bild.jpg" existiert gar nicht, sondern ein Programm, welches den Zugriff auf diesen Dateinamen (in diesem Ordner) überwacht. Wenn ein Zugriff erfolgt, dann wird irgendein Bild binär eingelesen - und der Handler schickt die Binärdaten direkt an den Client.

Um das noch deutlicher / einfacher zu erklären. Stell Dir vor, der Zugriff erfolgt nicht auf eine Datei namens "Bild.jpg" sondern auf eine Datei namens "Bild.php". Diese Bild.php Datei liest ein Binärbild ein (egal was - kann Zufallsbild sein) und schickt dieses Binär Kodiert wieder an den Client.

Schau Dir das mal hier an:
[url=http://www.japan-all-stars.de/jas2008/jas.aspx?page=bilder_fahrzeuge&mode=multi&pos=19]Japan All Stars 2008 - Japan All Stars[/url]

Die kleinen Bilder existieren nicht auf dem Server - sind also keine echten Bilder, sondern werden dynamisch erzeugt. Dies läuft auf die gleiche Weise ab, wie ich es eben beschrieben habe.

Hier wäre ein direkter Link:
[url]http://www.japan-all-stars.de/image/thumbgenerator.aspx?catalog=jas2008/images/fahrzeuge&amp;id=26[/url]
Der funktioniert aber nicht richtig, weil ich den Doctype für das Bild Objebt nicht sauber im Response Stream eingetragen habe.

Wenn das selbe aber in einem html <img src="... Element eingetragen ist, macht es der Browser automatisch richtig. Aber ich werde mir mal meinen Handler nochmal ansehen, dann sollte der auch allein funktionieren.

[IMG]http://www.japan-all-stars.de/image/thumbgenerator.aspx?catalog=jas2008/images/fahrzeuge&amp;id=25[/IMG]

[EID]-Mr.GiZMO 17.02.2009 16:01

AW: [PHP] Dynamisches Bild / Random Picture
 
Wie wäre es hier mit einer Umleitung (redirect) über die .htaccess-Datei.

Soll heißen sämtliche Zugriffe auf eine .jpg werden auf z.B. die redirect.php umgeleitet, die dann aus dem Ordener ein Zufallsbild darstellt:

[code]RewriteEngine on
RewriteRule ^/(.*\.jpg)$ redirect.php[/code]

Und in der php dann einfach die Zufallsroutine zum Bilder anzeigen.

qLx 17.02.2009 16:16

AW: [PHP] Dynamisches Bild / Random Picture
 
[quote='[EID]-Mr.GiZMO;607618']Wie wäre es hier mit einer Umleitung (redirect) über die .htaccess-Datei.

Soll heißen sämtliche Zugriffe auf eine .jpg werden auf z.B. die redirect.php umgeleitet, die dann aus dem Ordener ein Zufallsbild darstellt:

[code]RewriteEngine on
RewriteRule ^/(.*\.jpg)$ redirect.php[/code]Und in der php dann einfach die Zufallsroutine zum Bilder anzeigen.[/quote]


Wie muss die gesamte .htacces Datei aussehen? Wo muss die rein? Ich komm da ein bischen ins stolpern...

Meine PHP Datei
[quote][LEFT] [COLOR=#000000] [COLOR=#0000bb]<?php
$path [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"images2/random/"[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000bb]$dir [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]opendir[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$path[/COLOR][COLOR=#007700]);
while([/COLOR][COLOR=#0000bb]$dat [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]readdir[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dir[/COLOR][COLOR=#007700])){
if([/COLOR][COLOR=#0000bb]$dat [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#dd0000]"." [/COLOR][COLOR=#007700]&& [/COLOR][COLOR=#0000bb]$dat [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#dd0000]".." [/COLOR][COLOR=#007700]&& ([/COLOR][COLOR=#0000bb]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700],-[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#dd0000]"jpg" [/COLOR][COLOR=#007700]|| [/COLOR][COLOR=#0000bb]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700],-[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#dd0000]"gif" [/COLOR][COLOR=#007700]|| [/COLOR][COLOR=#0000bb]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700],-[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#dd0000]"png" [/COLOR][COLOR=#007700]|| [/COLOR][COLOR=#0000bb]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700],-[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#dd0000]"bmp" [/COLOR][COLOR=#007700]|| [/COLOR][COLOR=#0000bb]substr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700],-[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) == [/COLOR][COLOR=#dd0000]"JPG"[/COLOR][COLOR=#007700])){
[/COLOR][COLOR=#0000bb]$img_array[/COLOR][COLOR=#007700][] = [/COLOR][COLOR=#0000bb]$dat[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000bb]$amount[/COLOR][COLOR=#007700]++;
}
}
[/COLOR][COLOR=#0000bb]$num [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]rand[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$amount[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]);
[/COLOR][COLOR=#0000bb]$actual [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]$img_array[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000bb]$num[/COLOR][COLOR=#007700]];
echo [/COLOR][COLOR=#dd0000]" <img src=\""[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$path[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$actual[/COLOR][COLOR=#007700].[/COLOR][COLOR=#dd0000]"\" alt=\"Random Picture $i\" />\n"[/COLOR][COLOR=#007700];
[/COLOR][COLOR=#0000bb]?>[/COLOR] [/COLOR] [/LEFT]
[/quote]muss dann redirect.php heissen und in den gleichen Ordner?

[EID]-Mr.GiZMO 17.02.2009 16:24

AW: [PHP] Dynamisches Bild / Random Picture
 
Einfach so in die .htaccess schreiben und go go go.

Exit 17.02.2009 16:27

AW: [PHP] Dynamisches Bild / Random Picture
 
[quote=qLx;607626]Wie muss die gesamte .htacces Datei aussehen? Wo muss die rein? Ich komm da ein bischen ins stolpern...[/quote]

Ja - mehr muss da nicht drin stehen - kann aber - falls Du schon eine existierende hättest.

[quote=qLx;607626]
muss dann redirect.php heissen und in den gleichen Ordner?[/quote]

So wie es von Gizzi gepostet wurde, muss sich die redirect.php im selben Ordner befinden. Das könntest Du aber sicher noch anpassen - falls Du das brauchst. Aber ich würde es erstmal so probieren.

qLx 17.02.2009 16:32

AW: [PHP] Dynamisches Bild / Random Picture
 
Es geht nicht... :( Ich bin einfach zu dumm zum coden.. :D

In dem Ordner /images2/random/ befindet sich:

.htaccses
1.jpg
2.jpg
3.jpg
4.jpg
redirect.php

EDIT: Irgendwas passt nicht mit der .htaccses Datei. Wenn ich redirect.php anwähle funktioniert es. Aber ich möchte ja auf 1.jpg verlinken und die .htaccses soll ja, wie von GiZMo beschrieben, den Zugriff verweigern bzw. ihn auf redirect.php umleiten?

EDIT2: redirect.php ist angepasst und funktioniert auch. Nur die .htaccsess Datei funktioniert nicht.

[EID]-Mr.GiZMO 17.02.2009 16:39

AW: [PHP] Dynamisches Bild / Random Picture
 
Verzeichnis mit Bildern (Bsp: domain.de/bilder/)
|
|- .htaccess (mit o.g. Inhalt)
|
|- redirect.php
|
|- 1.jpg
|
|- 2.jpg
|
|- 3.jpg


Wenn jetzt jmd. domain.de/bilder/1.jpg aufruft, greift die .htaccess und leitet generell auf die redirect.php um in der dann aus allen .jpg's des Verzeichnis zufällig eine ausgewählt und angezeigt wird (das musst du noch coden).

Zum Test einfach mal irgendwas in die php schreiben und gucken, ob die .htaccess überhaupt funzt.

MfG


€: Zu langsam -.-

Exit 17.02.2009 16:41

AW: [PHP] Dynamisches Bild / Random Picture
 
Wenn sich die PHP Datei und die Bilder im selben Ordner befinden, dann stimmt spätestens Dein Code an der Stelle nicht mehr:

[php]<?php
$path = "images2/random/";
$dir = opendir($path);[/php]

Mach mal folgende Struktur:
[B]"/" (der Ordner unter "/images2"[/B])
redirect.php
.htaccses

[B]"/images2/random/"[/B]
1.jpg
2.jpg
3.jpg
4.jpg

qLx 18.02.2009 15:26

AW: [PHP] Dynamisches Bild / Random Picture
 
Könntest du mir vllt. die Dateien zu Verfügung stellen? So, dass ich nur noch den Pfad ändern muss? Wäre mir echt eine Hilfe. Ich bekomme es einfach nicht hin...

MfG

Exit 18.02.2009 15:39

AW: [PHP] Dynamisches Bild / Random Picture
 
@Gizzi - kannst Du das mal übernehmen, meine PHP Kenntnisse sind net sonderlich - und testen kann ich es auch nicht.

Komme ja hauptsächlich aus der ASP/ASP.NET (C#) Welt.

[EID]-Mr.GiZMO 18.02.2009 16:42

AW: [PHP] Dynamisches Bild / Random Picture
 
Liste der Anhänge anzeigen (Anzahl: 1)
Probiere bitte die angehängte .zip!

Eine Änderung musst du noch machen, den Pfad zur redirect.php in die .htaccess eintragen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Version 3.8.10 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.5.2 ©2010, Crawlability, Inc.