[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
rex_resize und Webcam - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

rex_resize und Webcam

16. Nov 2005, 17:37

Hi zusammen,

ich würde gerne Webcams auf einer Redaxo-Seite anzeigen. Diese würde ich dann gerne auch auf eine bestimmte Größe resizen. Ist das mit dem Resize-Addon möglich? Ich habe es getestet und es funktioniert bei mir leider nicht. Vielleicht hat es damit zu tun, dass das Bild nicht gecacht wird, sollte es ja aber bei einer webcam auch nicht...

Hat einer eine Idee, wie ich das bewerkstelligen könnte?
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

17. Nov 2005, 21:13

Hallo,

bei Webcam ist es eigentlich so, das diese ein .jpg-Bild per FTP in einen Ordner laden. Dieses kann man dan einfach z.B. mit
"index.php?rex_resize=100w__imagefile" einbinden.

Die andere Variante ist, das man einen Livestream darstellen will.
Dafür benötigt man ein Java-Applet, das entweder bei der Webcam dabei ist oder das es im Web zum downloaden gibt. Dieses kann man dann per Modul: PHP einbinden. Die Größe wird hierbei im Applet eingestellt.

Ich hoffe, ich konnte helfen.

mfg
Holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 10:59

Hallo Holger,

danke für deine Antwort. In meinem Fall sind es "Standbild"-Webcams. D.h. ich habe eine Adresse, hinter der sich ein JPEG verbirgt, was in gewissen Zeitabständen aktualisiert wird.

Was ich probiert habe, ist das Bild folgendermaßen mit rex_resize darzustellen:

Code: Alles auswählen

index.php?rex_resize=100w__http://www.bildadresse.de/bild.jpg
Leider funktioniert das nicht, das Bild wird nicht angezeigt. Woran könnte das liegen?
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

18. Nov 2005, 12:14

hallo,

"index.php?rex_resize=100w__http://www.bildadresse.de/bild.jpg"

ich denke, es funktioniert nur mit einem direktem pfad zu dem ordner. ich habe das resize-modul nicht programmiert, aber ich denke, es ist so.

am besten, du speicherst das webcambild gleich in den /files - ordner von redaxo.

mfg
holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 12:17

Es müsste dann ja aber auch regelmäßig automatisch aktualisiert werden. Wie könnte ich das erreichen?
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

18. Nov 2005, 14:22

hallo,

genau das wird das Problem sein.
das modul erkennt ja nicht, das das immer ein neues bild ist.
also ist mit cache hier nichts zuerreichen.
das bild muss bei jedem aufruf neu generiert werden.

beispiel hier (wird im php-modul integriert):

Code: Alles auswählen

 <?
// Ordner müssen vorhanden und beschreibbar sein
$PicPathIn="files/";
$PicPathOut="files/out/";

// Orginalbild
$bild="Foto.jpg";

// Bilddaten ermitteln
$size=getimagesize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueBreite=100;
$neueHoehe=intval($hoehe*$neueBreite/$breite);

if($size[2]==1) {
// GIF
$altesBild=ImageCreateFromGIF("$PicPathIn"."$bild");
$neuesBild=imageCreate($neueBreite,$neueHoehe);
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
imageGIF($neuesBild,"$PicPathOut"."TN"."$bild");
}

if($size[2]==2) {
// JPG
$altesBild=ImageCreateFromJPEG("$PicPathIn"."$bild");
$neuesBild=imageCreate($neueBreite,$neueHoehe);
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImageJPEG($neuesBild,"$PicPathOut"."TN"."$bild");
}

if($size[2]==3) {
// PNG
$altesBild=ImageCreateFromPNG("$PicPathIn"."$bild");
$neuesBild=imageCreate($neueBreite,$neueHoehe);
imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
ImagePNG($neuesBild,"$PicPathOut"."TN"."$bild");
}

$Thumbnail=$PicPathOut."TN".$bild;
echo "<IMG SRC=\"$Thumbnail\" WIDTH=\"$neueBreite\" HEIGHT=\"$neueHoehe\">";
?>
ungetestet.

mfg
Holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 16:31

Hallo Holger,

vielen Dank für deine Hilfe.

Ich habe deinen Code modifiziert und in mein Modul integriert. Hinzugefügt habe ich noch imagecopyresampled() für bilineares Resizen sowie imagecreatetruecolor(), weil sonst Farbfehler im Bild waren.

Code: Alles auswählen

<?php

if ("REX_VALUE[1]" != "")
  $pic = "REX_VALUE[1]";
else
  $pic = "dummy.jpg";


  if ("REX_VALUE[8]"=="")
    $newWidth = 168;
  else
    $newWidth = "REX_VALUE[8]"; 

  if ("REX_VALUE[9]"==0)
    $class = imgLeft;
  else $class = imgRight;

if ( $REX[GG] )
  list($width, $height, $type, $attr) = getimagesize($pic);

$fullSizeImage = "javascript:newWindow('grossansicht','index.php?article_id=47&FORM[titel]=
Gro&szlig;ansicht&FORM[target]=$pic',$width,$height,'empty');";

echo "<div class=\"$class\">";
if ("REX_VALUE[7]"==1)
  echo "<a href=\"$fullSizeImage\">";

// Speicherordner
$PicPathOut="files/";

// Name des generierten Bildes
$picName="cam";

// Bilddaten ermitteln

$newHeight=intval($height*$newWidth/$width);

if($type==1) {
// GIF
$ext=".gif";
$altesBild=ImageCreateFromGIF($pic);
$neuesBild=imagecreatetruecolor($newWidth,$newHeight);
imageCopyResampled($neuesBild,$altesBild,0,0,0,0,$newWidth,$newHeight,$width,$height);
imageGIF($neuesBild,$PicPathOut.$picName.$ext);
}

if($type==2) {
// JPG
$ext=".jpg";
$altesBild=ImageCreateFromJPEG($pic);
$neuesBild=imagecreatetruecolor($newWidth,$newHeight);
imageCopyResampled($neuesBild,$altesBild,0,0,0,0,$newWidth,$newHeight,$width,$height);
ImageJPEG($neuesBild,$PicPathOut.$picName.$ext);
}

if($type==3) {
// PNG
$ext=".png";
$altesBild=ImageCreateFromPNG($pic);
$neuesBild=imagecreatetruecolor($newWidth,$newHeight);
imageCopyResampled($neuesBild,$altesBild,0,0,0,0,$newWidth,$newHeight,$width,$height);
ImagePNG($neuesBild,$PicPathOut.$picName.$ext);
}

$Thumbnail=$PicPathOut.$picName.$ext;
echo "<IMG SRC=\"$Thumbnail\" WIDTH=\"$newWidth\" HEIGHT=\"$newHeight\">";


if ("REX_VALUE[7]"==1)
  echo "</a>";
echo "<div class=\"caption\" style=\"width: ".$newWidth."px\">REX_VALUE[2]</div></div>"; 


?>
Jetzt würde ich noch gerne folgendes erreichen: Ich würde gerne die Slice-ID des aktuellen "Webcam-Slices" in den Namen des Bildes integrieren, um ihn eindeutig zu machen. So in der Form:

Code: Alles auswählen

// Name des generierten Bildes
$picName="cam".REX_SLICE_ID;
Wobei es REX_SLICE_ID leider nicht gibt. Weißt du, wie man herausfinden kann, welche Slice-ID der aktuelle Slice hat?
Gruß Florian
www.softloop.biz

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

18. Nov 2005, 16:47

Hi,

ich würde auf

Code: Alles auswählen

$sliceId = $this->getValue('rex_article_slice.id');
Tippen.

ungetestet!

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 16:52

Hmm, will er irgendwie nicht, die Variable bleibt leer...
Gruß Florian
www.softloop.biz

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 17:28

Muss man das Bild denn überhaupt auf der Platte speichern? Kann man nicht einfach das Webcam-Bild nehmen und on-the-fly resizen?
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

18. Nov 2005, 17:46

Ja, kann man.

Ich setze mich mal am Wochenende hin, da ich gerade ein identisches Projekt habe.

mfg
Holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

18. Nov 2005, 17:56

Das wäre natürlich klasse. Bin mal gespannt auf dein Ergebnis. Vielen Dank nochmal für die Hilfe.
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

20. Nov 2005, 14:05

Hallo,

so ich habe mal ein wenig rumprobiert und bin leider bei der Generierung "on the fly" nicht weitergekommen.
In einer separaten Datei funktioniert es, in Redaxo aber nicht.

Dafür funktioniert bei mir das Image_resize_Modul einwandfrei.
Ich gebe der Webcam also an, das Sie jede Minute ein Bild namens "cam.jpg" in den Ordner /files hochlädt.

Einbinden tue ich es dann so:

Code: Alles auswählen

<?php
 echo '<img src="'.$REX[HTDOCS_PATH].'index.php?rex_resize=200a__cam.jpg" alt="Webcambild" />';
?>
Das Modul generiert bei jedem Aufruf dieses Bild neu, so das meine Befürchtung mit der Aktualität unbegründet war.

mfg
Holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

20. Nov 2005, 14:14

Hi Holger,
holger hat geschrieben:Das Modul generiert bei jedem Aufruf dieses Bild neu, so das
meine Befürchtung mit der Aktualität unbegründet war.
Eigentlich sollte diese Datei gecached werden... hmm

Gruß,
Markus

Gast

20. Nov 2005, 14:19

Hi Holger,

schade, dass das mit der On-the-fly-Generierung nicht funktioniert. Ich müsste das entweder on-the-fly lösen oder aber jeder einzelnen Webcam eine eigene ID im Dateinamen verpassen, weil ich mehrere Webcams einbinden möchte. Es sind auch keine seiteninternen Webcams sondern Webcams von externen Seiten, deren Bildadresse ich benutze, um mir das aktuelle Bild in Redaxo zu ziehen.

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

20. Nov 2005, 14:22

Oh, da war ich wohl als Gast eingeloggt... das kommt davon, wenn man seinem Computer fremdgeht ;)
Gruß Florian
www.softloop.biz

Benutzeravatar
holger
Beiträge: 403
Registriert: 21. Jun 2005, 13:21
Wohnort: Sehnde / Hannover / lower saxony
Kontaktdaten: Website

20. Nov 2005, 16:23

Hallo

Code: Alles auswählen

Eigentlich sollte diese Datei gecached werden... hmm
Die Datei wird doch gecached. Und wird dann mit dem neuen Bild, wenn es kommt, überschrieben.

Oder möchtest du alle Bilder aufbewahren ? Das werden dann aber viele.

Wenn es fremde Webcams sind, solltest du dir diese Bilder mittels einem Grabbingprogramm und per Cronjob in dein Verzeichnis holen.
Dann kannst du jedem Bild ja einen anderen Namen geben und alle auf einer Seite anzeigen.

mfg
holger
// Wenn die Theorie von der Praxis abweicht: --> Ändere die Theorie //

CHRONO.net Media Works
In der Wörth 11
31319 Sehnde
+495138614810 tel
+495138615553 fax
info@chrono.net

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

20. Nov 2005, 17:39

Hi Holger
holger hat geschrieben: Die Datei wird doch gecached. Und wird dann mit dem neuen Bild, wenn es kommt, überschrieben.
Ich war mir nur grad nicht sicher warum das so geht.. Aber ich hab grad nochmals im Addon nachgesehen und jetzt ists mir klar. Ich war mir nur nicht sicher, ob das Addon das geänderte File mitbekommt.

Gruß,
Markus

fsiebert1977
Beiträge: 168
Registriert: 9. Feb 2005, 20:51
Wohnort: Bad Nauheim
Kontaktdaten: Website

22. Nov 2005, 21:05

Nur zur Info:

Habe mein Problem jetzt so gelöst:

Code: Alles auswählen

// Name des generierten Bildes
$sliceId+=1;
$picName="cam"."REX_ARTICLE_ID".$sliceId;
So habe ich eine Redaxo-weite eindeutige Benennung der Webcams.
Gruß Florian
www.softloop.biz

sandmaus
Beiträge: 569
Registriert: 27. Apr 2006, 11:26
Wohnort: Dresden
Kontaktdaten: Website

Webcam - Cache

21. Feb 2009, 17:55

Hallo,
ich habe das Webcam-Cache-Problem so gelöst:
Annahme, Bild muß von anderem Server geholt werden.

Code: Alles auswählen

<?php

$host  ="www.domain";
$login ="xxx";
$pass  ="yyy";

$conn_ftp = ftp_connect("$host",21);
$ftp = ftp_login($conn_ftp,"$login","$pass");
$mode  =@ftp_pasv($conn_ftp,TRUE);

if($ftp){
    // echo "Sie sind eingeloggt<br>";
    $datei="./webcam_tansania/webcam.jpg";
    $lokal="./files/webcam.jpg";
    $mode = FTP_BINARY;
    $size=ftp_size($conn_ftp,"$datei");
    $size=$size/100;
    $os=ftp_systype($conn_ftp);
    if(@ftp_get($conn_ftp,$lokal,$datei,$mode))
    {
     //echo "Upload nach $lokal beendet.<br>Größe: $size kb<br>OS: $os";

     $datei = 'files/webcam.jpg'; // neue Webdatei nach upload
     if(file_exists($datei)) {
       //echo "Die Datei $datei ist existent";
       $change = "w_e_b_c_a_m_".mt_rand(10000,90000).".jpg";
       // echo $change;
       $new_name = (rename("files/webcam.jpg","files/".$change));
       echo "<img src=\"index.php?rex_resize=431w__$change\" alt=\"Webcam-Bild\" title=\"Webcam-  Bild\"> ";
     }
     else
     {
      echo "Die Webcam-Datei $datei ist nicht existent";
     }
    }
    else
    {
     echo "Fehler beim Upload.";
    }
}
else
{
 "Zugangsdaten stimmen nicht!";
}
ftp_quit($conn_ftp);

// hier bereinige ich die alten w_e_b_c_a_m_ - Dateien
$verz=opendir ('./files/');
while ($file = readdir ($verz)) {
    if($file != "." && $file != "..") {   // nur Dateien, keine Ordner . bzw ..
      // ich suche Dateien mit dem w_e_b_c_a_m_, alle, welche nicht benötigt werden,
      // außer das aktuelle Bild, werden gelöscht
      if ((stristr($file,"w_e_b_c_a_m_")) and ($change <> $file)) unlink("files/".$file);
      }
}
closedir($verz);

?>
Gruss Sandmaus

Zurück zu „Allgemeines [R3]“