Hilfe bei Bildmodul mit Größenbegrenzung!

sytanja
Beiträge: 11
Registriert: Mi 27. Okt 2004, 09:56
Kontaktdaten:

Hilfe bei Bildmodul mit Größenbegrenzung!

Beitrag von sytanja » Do 25. Nov 2004, 09:19

Hallo Leute!
Ich versuche ein Bildmodul zu machen, bei dem ich die Größe eines einzelnen Bildes begrenzen kann. Sodass man also ein größeres Bild raufspielen kann, dieses aber kleiner ausgegeben wird. Habe im Forum zu dem thema nichts funktionierendes gefunden. Ich habe mir dann ohne viele php Kenntnisse etwas zusammengeschustert aus der Galerie von kummer (http://www.contenido.de/forum/viewtopic.php?t=5695)
und einem normalen Bildmodul. Soweit klappt es auch, dass ich in der Konfiguration die Bildgröße angeben kann, aber wenn ich im Editor ein Bild lade, wird es nicht angezeigt. Im Code wird kein Fehler angezeigt und ich kenne mich zu wenig aus, um herauszufindén, woran das liegt:
Hier mein Code:

Code: Alles auswählen

Input:

echo "<table>";

echo "<tr><td>Thumbnailbreite (Max.):</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[2]\" value=\"CMS_VALUE[2]\" size=\"5\" /></td>"; 

echo "<tr><td>Thumbnailhöhe (Max.):</td>"; 
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>"; 

echo "</table>";


Code: Alles auswählen

Output:

<?

     $this->thumbnailSize['width'] = "CMS_VALUE[2]"; 
     $this->thumbnailSize['height'] = "CMS_VALUE[3]"; 
                     
      
 function checkInitValues() {      
      
      if ($this->thumbnailSize['width'] == '') $this->thumbnailSize['width'] = 100; 
      if ($this->thumbnailSize['height'] == '') $this->thumbnailSize['height'] = 100; 


      // rückgabe im erfolgsfall 
      return true; 
   } 


 function generateThumb($filename) { 

      $src_image_size = getimagesize($this->abspath['pictures'].$filename); 

      // prüfen, ob thumbnail bereits vorhanden ist 
      if (!file_exists("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg")) { 

         // ermitteln ob das bild auf bestimmte höhe oder bestimmte breite zu reduzieren ist 
         // sowie ermitteln, um welchen faktor das bild zu verkleinern ist 
         if ($src_image_size[0]/$src_image_size[1] > $this->thumbnailSize['width']/$this->thumbnailSize['height']) { 
            $verkleinerungsfaktor = $this->thumbnailSize['width']/$src_image_size[0]; 
         } else { 
            $verkleinerungsfaktor = $this->thumbnailSize['height']/$src_image_size[1]; 
         } 

         // berechnen der thumbnailgrösse 
         $bildhoehe = round($src_image_size[1] * $verkleinerungsfaktor); 
         $bildbreite = round($src_image_size[0] * $verkleinerungsfaktor); 

         // thumbnail erstellen 
         $dst_im = imagecreatetruecolor($bildbreite,$bildhoehe); 
         if ($src_image_size[2] == 1) { 
            $src_im = imagecreatefromGIF("{$this->abspath['pictures']}$filename"); 
         } elseif ($src_image_size[2] == 2) { 
            $src_im = @ImageCreateFromJPEG("{$this->abspath['pictures']}$filename"); 
         } else { 
            $src_im = @imagecreatefromgd("{$this->abspath['pictures']}$filename"); 
         } 
         imagecopyresampled ($dst_im,$src_im,0,0,0,0,$bildbreite,$bildhoehe,$src_image_size[0],$src_image_size[1]); 
         imagejpeg ($dst_im,"{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg",100); 
          
         $size['width'] = $bildbreite; 
         $size['height'] = $bildhoehe; 
      } else { 
         $thumbnailsize = getimagesize("{$this->abspath['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg"); 
         $size['width'] = $thumbnailsize[0]; 
         $size['height'] = $thumbnailsize[1]; 
      } 

      $size['filename'] = "{$this->path['thumbs']}{$this->thumbnailSize['width']}.{$this->thumbnailSize['height']}.$filename.jpg"; 
    
      return $size; 
   } 



if ("CMS_IMG[1]" != "") { 

    $img = '<img src="CMS_IMG[1]" border="0">'; 

    $imagelink = "CMS_LINK[1]"; 

    if ($imagelink != "http://" && !empty($imagelink) && $imagelink != $cfgClient[$client]["path"]["htmlpath"]) 
      { 
        $img = sprintf('<a href="%s" target="%s">%s</a>',"$imagelink", "CMS_LINKTARGET[1]", $img); 
      } 
    else {$img = '<img src="CMS_IMG[1]" border="0" width="$thumbnailsize[0]"; "height=$thumbnailsize[1]"; >';} 

    echo $img; 
} 

echo "<br>";
echo "<font class=\"text\">CMS_IMGDESCR[1]</font>"; 
echo "<br>";
echo "CMS_LINKDESCR[1]";
echo "<br>";

?>

Würde mich sehr über Tipps freuen!
Danke, sytanja

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Do 25. Nov 2004, 09:42

tja, da ist einiges leider nicht so ganz richtig. zum einen verwendest du objekt-syntax, obwohl du kein objekt hast. zum anderen integrierst du das originalbild, obwohl du das thumbnail anzeigen möchtest und drittens führst du die verkleinerung gar nicht durch, da kein aufruf der entsprechenden funktion statt findet. und last not least: du kannst keine arrays ausgeben innerhalb von doppelten anführungszeichen, wenn diese nicht in geschweiften klammern sind. und innerhalb von einfachfen anführungszeichen wird gar keine ersetzung von variablen durch ihre werte vorgenommen.

wenn ich zeit finde, werde ich es dir umschreiben. versprechen kann ich allerdings nichts. bin etwas unter druck.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

sytanja
Beiträge: 11
Registriert: Mi 27. Okt 2004, 09:56
Kontaktdaten:

Hallo Andreas!

Beitrag von sytanja » Do 25. Nov 2004, 09:51

Vielen dank für die Information, nur leider kann ich nicht allzu viel damit anfangen, da ich, wie schon gesagt, kein Programmierer bin. Wenn du mir das umschreiben könntest, wäre es natürlich wunderbar!
Jedenfalls danke, tanja

4sign
Beiträge: 73
Registriert: Do 1. Jul 2004, 22:09
Kontaktdaten:

Beitrag von 4sign » Di 21. Dez 2004, 13:33

gibt es das modul zwischenzeitlich?

Gast

Beitrag von Gast » Di 21. Dez 2004, 14:10

Nein,das Modul gibt es leider nicht. Andreas hat sich nicht mehr gemeldet, und bei mir sind Programmierkenntnisse so gut wie nicht vorhanden, deshalb kann ich trotz der genauen Erklärung der Fehler diese nicht ausbessern.
lg
Tanja

kummer
Beiträge: 2423
Registriert: Do 6. Mai 2004, 09:17
Wohnort: Bern, Schweiz
Kontaktdaten:

Beitrag von kummer » Di 21. Dez 2004, 16:36

doch, das modul gibt es. allerdings hat sich der kunde noch nicht dazu durchgerungen, es unter gnu zu stellen. sobald das der fall ist, wird an dieser stelle auch eine publikation des moduls erfolgen.

gruss,
andreas
aitsu.org :: schnell - flexibel - komfortabel :: Version 2.2.0 (since June 22, 2011) (jetzt mit dual license GPL/kommerziell)

TomsterXP

Beitrag von TomsterXP » Di 21. Dez 2004, 16:38

Woah, dieses Modul könnt ich wohl auch gebrauchen. Leider sind meine Programmierkenntnisse auch nicht die besten. Kann sich vielleicht jemand erbarmen, zu erklären, wie das Ganze umzuschreiben ist? (Ja, Kummer hat das schon gemacht. Das reicht mir als Blindfuchs aber leider nicht ;-) )

Gruß,
Thomas

Gast

Beitrag von Gast » Sa 19. Feb 2005, 16:08

hallo kummer,
gibt es das modul in der zwischenzeit schon unter gnu bzw. was würde es denn kosten?
ich bräuchte unbedingt sowas!

goach
Beiträge: 15
Registriert: Mo 16. Aug 2004, 19:05
Wohnort: Wien
Kontaktdaten:

Größenbegrenzung für Bilder

Beitrag von goach » Fr 11. Mär 2005, 18:24

Hallo Leute!

Hab da ein fertiges Modul (getestet auf Contenido 4.4.5) mit folgenden Funktionen:

- Maximale Bildgröße (Breite und/oder Höhe) und Qualität des verkleinerten Bildes einstellbar
- Verkleinerte Bilder werden in Thumbnailverzeichnis gestellt
- Popup ein/aus (mit externem Viewer)

Modul Input:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - INPUT
*
* Modulname   :     Bild mit Thumb
* Author      :     Gerhard Müller
* Copyright   :     MKO
* Created     :     4.3.2005
* Version     :     $Id$
* Modified    :     $Date$
************************************************/

if ( "CMS_VALUE[5]" )
{
	$thm_dir="CMS_VALUE[5]";
}
else
{
	$thm_dir = defined(THUMB_DIR)? THUMB_DIR: "thm";		// thumb dir - default "thm"
}

echo '<table cellspacing="0" cellpadding="10" border="0">';

echo '<tr><td>Thumb Verzeichnis (optional):</td>';
echo '<td><input type="text" name="CMS_VAR[5]" value="CMS_VALUE[5]" size="30" /></td></tr>';

echo '<tr><td>Maximale Breite Thumbs:</td>';
echo '<td><input type="text" name="CMS_VAR[6]" value="CMS_VALUE[6]" size="4" />px</td></tr>';

echo '<tr><td>Maximale Höhe Thumbs:</td>';
echo '<td><input type="text" name="CMS_VAR[7]" value="CMS_VALUE[7]" size="4" />px</td></tr>';

echo '<tr><td>Qualität Thumbs (optional):</td>';
echo '<td><input type="text" name="CMS_VAR[9]" value="CMS_VALUE[9]" size="3" />%</td></tr>';

$align = "CMS_VALUE[10]";
$opts = array ( "","absbottom","absmiddle","baseline","bottom","left","middle","right","texttop","top" );
echo '<tr><td>Ausrichtung Thumb (optional):</td>';
echo '<td><select name="CMS_VAR[10]">';
foreach ( $opts as $v )
{
	$sel = ( $align==$v? "selected": "" );
	echo "<option value=\"$v\" $sel>$v</option>";
}
echo '</select></td></tr>';

echo "<tr><td>Popup aktivieren:</td>";
$pop = "CMS_VALUE[8]";
$chk = ( $pop>""? "checked": "" );
echo '<td><input type="checkbox" name="CMS_VAR[8]" value="true" size="3" '.$chk.' /></td></tr>';

echo "</table>";
Modul Output:

Code: Alles auswählen

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Bild mit Thumb
* Author      :     Gerhard Müller
* Copyright   :     MKO
* Created     :     4.3.2005
* Version     :     $Id$
* Modified    :     $Date$
************************************************/

<?php
	
	$viewer = "/src/viewer.php";									// image viewer for popups

	$thm_dir = "CMS_VALUE[5]"? "CMS_VALUE[5]": "thm";		// thumb dir - default "thm"
	$thm_maxw = intval("CMS_VALUE[6]"); 						// max width thumb
	$thm_maxh = intval("CMS_VALUE[7]");							// max height thumb
	$thm_qual = "CMS_VALUE[9]"? intval("CMS_VALUE[9]"): 80;	//quality jpeg
	$show_popup = "CMS_VALUE[8]"? true: false;				// show popup yes/no
	$align = "CMS_VALUE[10]"? 'align="CMS_VALUE[10]"': "";	// align thumb

	$img_dir = $cfg['path']['frontend'];						// base dir frontend
	$img_src = "CMS_IMG[10]";										// src of image
	$img_lnk = "CMS_LINK[10]";										// image link
	$img_tgt = "CMS_LINKTARGET[10]";								// target of imagelink
	
	$img_url = parse_url($img_src);
	$img_path = "$img_dir".$img_url['path'];
	if ( $img_src && file_exists($img_path) )
	{
		unset ($ratio);
		$img_size = getimagesize ($img_path);
		if ( $thm_maxw>0 )
		{
			$ratio = $thm_maxw/$img_size[0];
			$thm_w = $thm_maxw;
			$thm_h = round($ratio*$img_size[1]);
		}
		if ( $thm_maxh>0 )
		{
			$rh = $thm_maxh/$img_size[1];
			$ratio = ( $ratio>$rh? $rh: $ratio );
			$thm_w = round($ratio*$img_size[0]);
			$thm_h = $thm_maxh;
		}
		$thm_src = $img_src;
		if ( is_numeric($ratio) && $ratio<1 )
		{
			// use thumb, resize image
			$thm_src = dirname($img_src)."/$thm_dir/".basename($img_src);
			$thm_path = dirname($img_path)."/$thm_dir/".basename($img_path);
			$flag_create = !file_exists($thm_path);
			if ( !$flag_create )
			{
				$thm_size = getimagesize ( $thm_path );
				if ( !$thm_size || $thm_size[0]!=$thm_w )
				{
					$flag_create = true;
				}
			}
			if ( $flag_create )
			{ // make thumb
				if ( !file_exists(dirname($thm_path)) ) mkdir(dirname($thm_path),0777);
				unset($i);
				switch ( exif_imagetype($img_path) )
				{
					case IMAGETYPE_GIF:
						$i = imagecreatefromgif($img_path);
						break;
					case IMAGETYPE_JPEG:
						$i = imagecreatefromjpeg($img_path);
						break;
					case IMAGETYPE_PNG:
						$i = imagecreatefrompng($img_path);
						break;
					case IMAGETYPE_BMP:
						$i = imagecreatefromwbmp($img_path);
						break;
					case IMAGETYPE_SWF:
					case IMAGETYPE_PSD:
					case IMAGETYPE_TIFF_II:
					case IMAGETYPE_TIFF_MM:
					case IMAGETYPE_JPC:
					case IMAGETYPE_JP2:
					case IMAGETYPE_JPX:
					case IMAGETYPE_SWC:
					default:
						$i = imagecreatefromxbm($fsrc);
				} //detect image type
				if ( $i )
				{
					$thm = imagecreatetruecolor($thm_w,$thm_h);
					imagecolortransparent($thm,imagecolorat($i,0,0));
					imagecopyresampled($thm,$i,0,0,0,0,$thm_w,$thm_h,$img_size[0],$img_size[1]) &&
						imagejpeg($thm,$thm_path,$thm_qual);
					imagedestroy($thm);
					imagedestroy($i);
				}
			} // create thumb
		} // $ratio<1 

		$img =  sprintf('<img src="%s" border="0" %s>',$thm_src,$align);
		
		$slf = "http://" . $_SERVER['HTTP_HOST'] . dirname($PHP_SELF) . "/";
		if ( $img_lnk != "http://" && $img_lnk != $slf )
		{
		  $img = sprintf('<a href="%s" target="%s">%s</a>',$img_lnk,$img_tgt,$img);
		}
		elseif ( $show_popup )
		{
		  $img = sprintf('<a href="%s?img=%s" target="_blank">%s</a>',$viewer,urlencode($img_src),$img );
		}
		
		echo $img;
	} // $img_src!=""
	
	if ( $contenido || "CMS_IMGDESCR[10]" )
	{
		echo "<br>";
		echo "CMS_IMGDESCR[10]";
	}
	if ( $contenido || "CMS_LINKDESCR[10]" )
	{
		echo "<br>";
		echo "CMS_LINKDESCR[10]";
	}
	echo "<br>";
?>
Der optionale Viewer für Popup Vollbild (bei mir in "/src/viewer.php"):

Code: Alles auswählen

<?php
/* Variables:
* $_GET['img']	HTTP-Code for image "<img ....>"
*/
if ( $_GET['img'] )
{
	$img = substr( $_GET['img'], 0, 1024 );
	$img = strip_tags ( urldecode($img) );
	$url = parse_url($img);
	if ( $url['host'] && $url['host'] != $_SERVER['HTTP_HOST'] ) exit(0);
}
else
{
	exit(0);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Bildbetrachter</title>
</head>
<body>
<table cellpadding="4" cellspacing="4" border="0">
	<tr>
		<td><img src="<?php echo $img; ?>"></td>
	</tr>
	<tr>
		<td><div align="right" style="font:Verdana, sans-serif;font-size:11px;font-weight:bold;text-transform:uppercase;"><a href="javascript:window.close();">&raquo;&nbsp;Fenster schliessen</a></div></td>
	</tr>
</table>
</body>
</html>
Hoffe es kann jemand was damit anfangen!
:wink:

effex
Beiträge: 55
Registriert: So 13. Mär 2005, 14:03
Kontaktdaten:

Schön wärs ja, …

Beitrag von effex » Fr 13. Mai 2005, 19:46

… wenn auch eine Bildanzeige erfolgen würde! Leider werden die ausgewählten Bilder bei mir nicht angezeigt. :( :( :(

4sign
Beiträge: 73
Registriert: Do 1. Jul 2004, 22:09
Kontaktdaten:

Re: Schön wärs ja, …

Beitrag von 4sign » Mo 13. Jun 2005, 15:27

effex hat geschrieben:… wenn auch eine Bildanzeige erfolgen würde! Leider werden die ausgewählten Bilder bei mir nicht angezeigt. :( :( :(
Ja, tolles Modul! Funktioniert leider nicht - gar nix!!!!!!!!!!!

Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki » Mi 8. Mär 2006, 14:45

also bei mir funzt es hervorragend :)

Man sollte vielleicht nicht gleich rummeckern sondern sich Gedanken machen, woran es liegt, dass es nicht geht. :P

Benki
Zuletzt geändert von Benki am Mi 8. Mär 2006, 14:53, insgesamt 1-mal geändert.

rezeptionist
Beiträge: 1536
Registriert: Fr 20. Aug 2004, 10:07
Kontaktdaten:

Beitrag von rezeptionist » Mi 8. Mär 2006, 14:47

Benki hat geschrieben:also bei funzt es hervorragend :)

Man sollte vielleicht nicht gleich rummeckern sondern sich Gedanken machen, woran es liegt, dass es nicht geht. :P

Benki
Das nenne ich jetzt mal eine wirklich gelungene Antwort !!!!

Gute einstellung weiter so :wink:
greets

stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von stefkey » Do 9. Mär 2006, 16:52

Hi,

prima Modul, klappt hervorragend. Die optionale Popup Funktion habe ich nicht getestet.

Danke
stefkey

Benki
Beiträge: 93
Registriert: Mi 28. Sep 2005, 13:04
Kontaktdaten:

Beitrag von Benki » Do 9. Mär 2006, 17:08

Das Popup funktioniert auch wie angegeben. Ist zwar nicht besonders komfortabel (Fenstergrößenanpassung etc.) aber erfüllt seinen Zweck.

Benki

Gesperrt