Neue Version des Moduls Bilder-Galerie von Large Green Wood

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Neue Version des Moduls Bilder-Galerie von Large Green Wood

Beitrag von chobbert » Sa 17. Jan 2004, 00:43

Auch wenn es schon genug ähnliche Modul gibt: Ich hab das Bilderbuch-Modul von Large Green Wood, vgl. http://www.contenido.de/front_dev/upload/1ImageGal.txt, so verändert, daß die Thumbnails über die GD-Libary erzeugt werden, wenn man keinen Pfad für ImageMagick angibt (z.B. weil es nicht verfügbar ist...)


Input:

Output:


mit Änderung imagecopyresampled statt imagecopyresized

Code: Alles auswählen

<?

// Bildergalerie
// Imageresize über ImageMagick *ODER* GD
// Version: 15.01.2004
//
// Author: Large Green Wood  vgl. http://www.contenido.de/front_dev/upload/1ImageGal.txt
// Modified by: Robert Strouhal www.clearcreative.de




echo "<p>\n";

// ANFANG OUTPUT

$imagedir="CMS_VALUE[2]";
$thumbnails="CMS_VALUE[3]";
$imagetypes=explode(";","CMS_VALUE[4]");
$rows="CMS_VALUE[6]";
$cols="CMS_VALUE[5]";

$thb_x_size="CMS_VALUE[7]";
$thb_y_size="CMS_VALUE[8]";

$image_idcat="CMS_VALUE[0]";
$image_idside="CMS_VALUE[1]";

$im_path="CMS_VALUE[9]";

//-- config ende -------------------------------------

function is_image($filename,$typearray) {
  reset($typearray);
  while($val=each($typearray)) {
     if (strstr($filename,$val[value])!==false) {
       return true;
     }
  }
}


// verkleinert ein Bild auf die angegebene Breite (bei Querformat) oder Höhe (bei Hochformat)
// Seitenverhältnisse werden beibehalten
function resizeImageGD($sourceFile, $targetFile, $newwidth=50, $newheight=50){
	$source = ImageCreateFromJpeg($sourceFile);
	$width  = ImageSx($source);
	$height = ImageSy($source);

	if ($width > $height){ // Querformat
		$newheight = $height*($newwidth/$width);
	}else{ // Hochformat
		$newwidth  = $width*($newheight/$height);
	}

	$target = ImageCreateTrueColor($newwidth,$newheight);
	// ÄNDERUNG vgl. Forums-Beitrag imagecopyresized ($target, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
	imagecopyresampled ($target, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

	ImageJPEG($target,$targetFile,100);
}



//-- functions ende ----------------------------------

if (!isset($mmstart)) {
  $mmstart=0;
}

// Anzeige eines Bildes oder Übersicht?

if ($subfile!="") {
// Bild anzeigen
 echo "<center><a href=\"javascript:history.back()\">zurück</a></center>";
 echo "<br>";
 echo "<img src=\"$subfile\">";
 echo "<br>";
 echo "<center><a href=\"javascript:history.back()\">zurück</a></center>";

} else {
// Gallery anzeigen

$handle=opendir($imagedir);

echo "<table>";
$n=0;
$filearray=Array();
while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
             $filearray[]=$file;
        }
}

reset($filearray);

// skip images...
for ($n=0;$n<$mmstart;$n++)
  $ffile=each($filearray);
$n=0;
while ($ffile=each($filearray)) {
             $file=$ffile[value];
             // generate thumbnail, if nessesairy. Now THIS is fun :)
             // natuerlich nur, wenn imagemagick vorhanden ist...
            if (!file_exists($thumbnails."/thb_".$file) ) {
               if ($im_path!="") {
                 $cmd=$im_path."/convert -scale ".$thb_x_size."x".$thb_y_size." ".$imagedir."/".$file." ".$thumbnails."/thb_".$file;

                 exec($cmd);
                 // nochmal prüfen!
                 $thumbnail=file_exists($thumbnails."/thb_".$file);
                } else{
                 // Bilder mit GD verkleinern
				 @ini_set("max_execution_time", 120);
                 @resizeImageGD($imagedir."/".$file, $thumbnails."/thb_".$file, $thb_x_size,$thb_y_size);
                 $thumbnail=file_exists($thumbnails."/thb_".$file);
                }
            } else
              $thumbnail=true;
            if ($n%$cols==0)
              echo "<tr>\n";
            if ($image_idcat!=0)
              $url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcatside=$image_idcat&subfile=".rawurlencode($imagedir."/".$file));
            else
              $url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside&subfile=".rawurlencode($imagedir."/".$file));
            echo "<td valign=\"middle\" align=\"center\" width=\"$thb_x_size\" height=\"$thb_y_size\"><a href=\"$url\">".($thumbnail ? "<img src=\"$thumbnails/thb_$file\" border=\"0\">":"$file")."</a></td>\n";
            $n++;
            if ($n%$cols==0)
              echo "</tr>\n";


        // nur solange wie's not tut...
        if ($n>=$rows*$cols)
          break;
    }
echo "<tr> <td colspan=\"$cols\" align=\"center\">";

if ($mmstart>0) {
  $url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart-$rows*$cols));
  echo "<a href=\"$url\">vorherige Bilder...</a>";
}

echo "<span style=\"font-size: 9pt;\">| zeige Bilder ".($mmstart+1)." - ".($mmstart+$n)." |</span>";

if ($n+$mmstart<count($filearray)) {
  $url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart+$rows*$cols));
  echo "<a href=\"$url\">weitere Bilder...</a>";
}

echo "</tr>\n";
echo "</table>";
} // Ende Gallery anzeigen


echo "</p>";
?>



Schöne Grüße

Robert
Zuletzt geändert von chobbert am Mo 19. Jan 2004, 13:02, insgesamt 1-mal geändert.

zwiebel
Beiträge: 67
Registriert: Fr 17. Okt 2003, 20:54
Kontaktdaten:

Beitrag von zwiebel » Sa 17. Jan 2004, 15:11

@ Robert,
wo habe ich denn den Fehler, wenn alles geht, ausser die Thumbs als Link (thb_Logo_ega.jpg) angezeigt werden.

gruß Delicart
Contenido 4.6.8 - Firefox

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » Sa 17. Jan 2004, 15:15

In der Konfiguration muß man einen Ordner für die Bilder und die Thumbnails angeben. Beide Ordner müssen angelegt sein. Für den Thumbnail-Ordner müssen Schreibrechte vorhanden sein, sonst können die Bilder nicht angelegt werden.


Schöne Grüße

Robert

zwiebel
Beiträge: 67
Registriert: Fr 17. Okt 2003, 20:54
Kontaktdaten:

Beitrag von zwiebel » Sa 17. Jan 2004, 17:01

Hallo Robert,
Rechte sind von Upload bis thumbs auf 777. Aber er zeigt auch nur die links in der Galerie, nicht in den Thumbs an??? Trotzdem der Pfad richtig ist.

Gruß Marcus
Contenido 4.6.8 - Firefox

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » So 18. Jan 2004, 14:47

Die Links werden immer dann angezeigt, wenn das Thumbnail-Bild nicht vorhanden ist, und statt dessen ein Textlink zum eigentlichen Bild benötigt wird.

Was steht in errorlog.txt? Funktioniert das Original-Modul bei Dir?


Schöne Grüße

Robert

PickPay
Beiträge: 164
Registriert: Di 2. Dez 2003, 19:38
Wohnort: Zürich
Kontaktdaten:

Beitrag von PickPay » Mo 19. Jan 2004, 11:45

Grundsätzlich würde ich nicht ImageCopyResized sondern ImageCopyResampled verwenden, da ist die Bildqualität nachher viel besser. Geht ab GD 2.0.

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » Mo 19. Jan 2004, 12:08

Danke für den Hinweis, werde es mal dementsprechend ändern.
Forumsbeitrag oben ist angepasst.


Schöne Grüße

Robert

prinzkafka
Beiträge: 10
Registriert: Mi 14. Jan 2004, 14:36
Wohnort: Dresden
Kontaktdaten:

vor zurück und home button

Beitrag von prinzkafka » Di 20. Jan 2004, 13:36

hallo, ich würde gerne dieses Modul nutzen, bisher nutze ich das Modul Bildergaleie 0.9.1.

Mein Problem ist nur, daß ich einen vor und zurück und home button in der Detailansicht brauche (das ganze ohne Popup- Fenster).

Leider weiß ich aber nicht, wie ich solche eine Funktion schreibe, die das schafft,

jetzt wird die Erklärung etwas schwieriger.

wenn ich zum Beispiel in der Detailansicht dann 20 Bilder nach vorn gegangen bin und dann auf den Home-Button drücke, soll der home-button nicht auf die Erste Seite der Thumbnailansicht springen, sonder zu der Thumbnailansicht, in der auch das Bild zu sehen ist, kommt also darauf an, wieviel rows und columns ich eingestellt habe.

Bis jetzt habe ich festgestellt, daß man das ganze vielleicht über mmstart schaffen könnte, ich weiß aber nicht wie man ermittelt, bei dem wievielten Bild ich mich gerade befinde.

Bitte helft mir.
++Frieden nur ein Wort, Krieg nur ein Befehl++

CyberDan
Beiträge: 204
Registriert: Mo 15. Dez 2003, 13:01
Wohnort: Saarland
Kontaktdaten:

Beitrag von CyberDan » Di 20. Jan 2004, 14:22

chobbert hat geschrieben:Beide Ordner müssen angelegt sein. Für den Thumbnail-Ordner müssen Schreibrechte vorhanden sein, sonst können die Bilder nicht angelegt werden.
Kann ich irgendwo einstellen, dass ordner, die ich in contenido erstelle, automatisch mit 777 ausgestattet werden? Oder muß ich immer den Umweg über ftp gehen?

simas
Beiträge: 153
Registriert: Fr 7. Mär 2003, 11:15
Wohnort: Gampelen, Schweiz
Kontaktdaten:

Beitrag von simas » Do 22. Jan 2004, 12:34

Hallo,

Die Thumbnail-Datei wird bei mir zwar erstellt, aber hat die grösse 0.

Wo liegt das Problem?

Vielen Dank und Gruss
Simon

filliam
Beiträge: 16
Registriert: Mo 26. Jan 2004, 13:31
Kontaktdaten:

Beitrag von filliam » Di 27. Jan 2004, 18:40

das gleiche problem hatte ich auch, ich denke dass es keine gif's schreiben kann; sprich keine gif-unterstützung vorhanden ist. geh ich richtig in der annahme? jedenfalls waren bei mir alle 0byte-dateien gif's.

hoffe das hilft dir.

chinchin
fillliam.

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » Di 27. Jan 2004, 18:43

richtig, GIF wird bei den neuen Versionen der GD nicht mehr unterstützt. Hier würde IMHO nur ImageMagick weiterhelfen.

Welche Dateien wollt Ihr denn in Eurer Gallery darstellen?


Robert

filliam
Beiträge: 16
Registriert: Mo 26. Jan 2004, 13:31
Kontaktdaten:

Beitrag von filliam » Di 27. Jan 2004, 18:50

jpeg geht wunderpraechtig, hab's in version 4.4.2 mit geändertem igallery script (?) aus nem topic hier.

ich würd nun gern das teil umschreiben auf popups. da sollte ja reichen den link zu ändern und ne javascript funktion zu nehmen ;). sexy wär wenn man das auswählen könnte beim input... dort hats ja auch was (anzeigen in: "diese seite"). nur... wie krieg ich dort eine andere auswahl?!?

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » Di 27. Jan 2004, 21:58

Du nimmst den Input-Code aus dem Original-Modul (URL siehe erstes Posting), und erweiterst folgende Stelle:

Code: Alles auswählen

if ($selected != 0) {
	echo "<option value=0>diese Seite</option>";
} else {
       	echo "<option value=0 selected>diese Seite</option>";
}

Naja, und im Output-Code verarbeitest Du dann eben CMS_VALUE[0]...


Schöne Grüße

Robert

chobbert
Beiträge: 371
Registriert: Mo 14. Jul 2003, 10:14
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von chobbert » Mi 28. Jan 2004, 19:44

@filiam: Nachdem ich nun auch die Option gebraucht habe, Bilder in einem PopUp anzeigen zu lassen, hab ich das Modul noch ein wenig erweitert.

Ist ein Schnellschuß, kann sein, daß ich es in den nächsten Tagen noch etwas verändern werde. Aber vielleicht hilft es Dir ja bei Deinem Problem.


Input:

Code: Alles auswählen

$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\">
        <tr valign=\"top\">
          <td>Einzelbild-Seite</td>
           <td>
            <select name=\"CMS_VAR[0]\">";

echo "<option value=1 ";
if ($selected == 1){
   echo " selected ";
}
echo ">PopUp-Fenster</option>";
echo "<option value=0 ";
if ($selected == 0){
   echo " selected ";
}
echo ">diese Seite</option>";

echo "</select>";
echo "      </td>
</tr>
        <tr>
        <td>
        Image-Directory:
       </td>
            <td>
          <input size=20 type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\">
	</td>
  	</tr>

        <tr>
        <td>
        Thumbnail-Directory:
       </td>
            <td>
          <input size=20 type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\">
	</td>
  	</tr>
                
        <tr>
        <td>
        Image-Dateieendung (z.B. .jpg;.gif):
       </td>
            <td>
          <input size=20 type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\">
	</td>
  	</tr>

        <tr>
        <td>
         Thumbnailtabelle in Spalten x Zeilen:
       </td>
            <td>
          <input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[6]\" value=\"CMS_VALUE[6]\">
	</td>
  	</tr>
        

        <tr>
        <td>
         Thumbnailgr&ouml;sse in XxY:
       </td>
            <td>
          <input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[7]\" value=\"CMS_VALUE[7]\">x<input size=3 maxlength=2 type=\"text\" name=\"CMS_VAR[8]\" value=\"CMS_VALUE[8]\">
	</td>
  	</tr>

        <tr>
        <td>
        Pfad zum ImageMagick (optional):
       </td>
            <td>
          <input size=20 type=\"text\" name=\"CMS_VAR[9]\" value=\"CMS_VALUE[9]\">
	</td>
  	</tr>
        
      </table>";

// ENDE INPUT


Output:

Code: Alles auswählen

<script language="JavaScript">
function boo(){
}
</script>

<div class="htmltext">
<?

// Bildergalerie
// Imageresize über ImageMagick *ODER* GD
// Version: 15.01.2004
//
// Author: ??
// Modified by: Robert Strouhal www.clearcreative.de




echo "<p>\n";

// ANFANG OUTPUT

$imagedir="CMS_VALUE[2]";
$thumbnails="CMS_VALUE[3]";
$imagetypes=explode(";","CMS_VALUE[4]");
$rows="CMS_VALUE[6]";
$cols="CMS_VALUE[5]";

$thb_x_size="CMS_VALUE[7]";
$thb_y_size="CMS_VALUE[8]";

$image_idcat="CMS_VALUE[0]";
$image_idside="CMS_VALUE[1]";

$im_path="CMS_VALUE[9]";

//-- config ende -------------------------------------

function is_image($filename,$typearray) {
  reset($typearray);
  while($val=each($typearray)) {
     if (strstr($filename,$val[value])!==false) {
       return true;
     }
  }
}


// verkleinert ein Bild auf die angegebene Breite (bei Querformat) oder Höhe (bei Hochformat)
// Seitenverhältnisse werden beibehalten
function resizeImageGD($sourceFile, $targetFile, $newwidth=50, $newheight=50){
	$source = ImageCreateFromJpeg($sourceFile);
	$width  = ImageSx($source);
	$height = ImageSy($source);

	if ($width > $height){ // Querformat
		$newheight = $height*($newwidth/$width);
	}else{ // Hochformat
		$newwidth  = $width*($newheight/$height);
	}

	$target = ImageCreateTrueColor($newwidth,$newheight);
	imagecopyresampled ($target, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

	ImageJPEG($target,$targetFile,100);
}



//-- functions ende ----------------------------------

if (!isset($mmstart)) {
  $mmstart=0;
}

// Anzeige eines Bildes oder Übersicht?

if ($subfile!="") {
// Bild anzeigen
 echo "<center><a href=\"javascript:history.back()\">back / zurück</a></center>";
 echo "<br>";
 echo "<img src=\"$subfile\">";
 echo "<br>";
 echo "<center><a href=\"javascript:history.back()\">back / zurück</a></center>";

} else {
// Gallery anzeigen

$handle=opendir($imagedir);

echo "<table>";
$n=0;
$filearray=Array();
while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != ".." && is_image($file,$imagetypes)) {
             $filearray[]=$file;
        }
}

reset($filearray);

// skip images...
for ($n=0;$n<$mmstart;$n++)
  $ffile=each($filearray);
$n=0;
while ($ffile=each($filearray)) {
             $file=$ffile[value];
             // generate thumbnail, if nessesairy. Now THIS is fun :)
             // natuerlich nur, wenn imagemagick vorhanden ist...
            if (!file_exists($thumbnails."/thb_".$file) ) {
               if ($im_path!="") {
                 $cmd=$im_path."/convert -scale ".$thb_x_size."x".$thb_y_size." ".$imagedir."/".$file." ".$thumbnails."/thb_".$file;

                 exec($cmd);
                 // nochmal prüfen!
                 $thumbnail=file_exists($thumbnails."/thb_".$file);
                } else{
                 // Bilder mit GD verkleinern
				 @ini_set("max_execution_time", 120);
                 @resizeImageGD($imagedir."/".$file, $thumbnails."/thb_".$file, $thb_x_size,$thb_y_size);
                 $thumbnail=file_exists($thumbnails."/thb_".$file);
                }
            } else
              $thumbnail=true;
            if ($n%$cols==0)
              echo "<tr>\n";
            if ($image_idcat!=0){
// Bilder in PopUp anzeigen
$imageSize = getimagesize($imagedir."/".$file);
$js = " onClick=\"javascript:window.open('".$imagedir."/".$file."','','height=".($imageSize[1]+30).",width=".($imageSize[0]+30)."')\" ";
$url = "javascript:boo();";    
            }else{
              $url=$sess->url("front_content.php?client=$client&lang=$lang&subid=$subid&idcat=$idcat&idart=$idart&idside=$idside&subfile=".rawurlencode($imagedir."/".$file));
$js = "";
              }

            echo "<td valign=\"middle\" align=\"center\" width=\"$thb_x_size\" height=\"$thb_y_size\"><a href=\"$url\" $js>".($thumbnail ? "<img src=\"$thumbnails/thb_$file\" border=\"0\">":"$file")."</a></td>\n";
            $n++;
            if ($n%$cols==0)
              echo "</tr>\n";


        // nur solange wie's not tut...
        if ($n>=$rows*$cols)
          break;

    }
echo "<tr> <td colspan=\"$cols\" align=\"center\">";

if ($mmstart>0) {
  $url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart-$rows*$cols));
  echo "<a href=\"$url\">&laquo;</a>";
}

echo "<span style=\"font-size: 9pt;\">| Images".($mmstart+1)." - ".($mmstart+$n)." |</span>";

if ($n+$mmstart<count($filearray)) {
  $url=$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&subid=$subid&idside=$idside&mmstart=".($mmstart+$rows*$cols));
  echo "<a href=\"$url\">&raquo;</a>";
}

echo "</tr>\n";
echo "</table>";
} // Ende Gallery anzeigen


echo "</p>";
?>
</div>


Schöne Grüße

Robert

Gesperrt