php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 1,00 durchschnittlich.
Alt 30.10.2009, 21:29  
Neuer Benutzer
 
Registriert seit: 09.08.2009
Beiträge: 6
PHP-Kenntnisse:
Anfänger
MeTurabdin befindet sich auf einem aufstrebenden Ast
Standard Resize Image

Hallo,

ich suche schon seit 3 Tagen nach der Ursache aber finde es nicht.
Da ich C++ gelernt habe blicke ich so einigermaßen im php-code durch aber mir fehlt das wissen an PHP..

Es geht um folgendes:
Ich habe eine Template. Diese erzegt mir für ein Bild automatisch ein Thumbnail. Das erstelle Bild wird auf der Startseite quasi als Startbild dargestellt.

Mein Problem ist dass das Bild auf die richtige größe geändert wird, aber in der Ausgabe wird das Bild auf die ursrpüngliche größe skaliert.

Als Bsp:
Egal wie groß das bild ist, es soll immer auf 60X60 verkleiner werden um auf der startseite dargestellt zu werden.
Ein Bild von der größe 200x200 wird auf 60x60 verkleinert. In der Darstellung wird es jedoch wieder auf die ursprügliche größe gestreckt. also auf 200x200, obwohl das bild jetzt 60x60 ist..


Irgendwo wird dem Bild die Höhe und Breite des Orginal Bildes vergeben:
<img style="float: left;" mce_style="float: left;" src="/images/resized/images/XYZ_60_60.jpg" mce_src="/images/XYZ.jpg" width="200" border="" height="200" />

Ich möchte dass bei der Ausgabe des Bildcodes keine Höhe und Breite vorgegeben wird. Praktisch so hier:
<img style="float: left;" mce_style="float: left;" src="/images/resized/images/XYZ_60_60.jpg" mce_src="/images/XYZ.jpg" border="" />

Kann mir jemand einen Ansatzpunkt nennen wie ich vorgehen sollte?

hier ist das code:
PHP-Code:
$image Tools::extractImage ($this->itemtrue$this->imageWidth$this->imageHeight); 
PHP-Code:
    function extractImage( &$row$autoresize$width 0$height 0) {
        
$regex '/<img ([^\>]*)>/';
        
//$regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im';
        
preg_match ($regex$row->text$matches);
        if(!
count($matches)) preg_match ($regex$row->fulltext$matches);
        
$images = (count($matches)) ? $matches : array();
        
$image '';
        
        if (
count($images)) {
            
$image trim($images[1]);
            
$params Tools::parseParams ($image);
        }
        if (
$image) {
            if (
$autoresize && function_exists('imagecreatetruecolor'
                && (
$image1 Tools::processImage $params['src'], $width$height ))) {
                    
//$image = "<img src=\"".$image1."\" alt=\"{$row->title}\" $align />";
                    
$params['src'] = $image1;
            } else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
            
$image '';
            foreach (
$params as $k=>$v$image .= " $k=\"$v\"";
            
$image "<img$image />";
        } else 
$image '';

        
$regex1 "/\<img[^\>]*>/";
        
$row->text preg_replace$regex1''$row->text );
        
$regex1 "/<div class=\"mosimage\".*<\/div>/";
        
$row->text preg_replace$regex1''$row->text );
        return 
$image;
    }

    function 
processImage ( &$img$width$height$crop=1) {
        if(!
$img) return;
        
        
$img str_replace(JURI::base(),'',$img);
        
$img str_replace("'",'',$img);
        
$img rawurldecode($img);
        
$imagesurl = (file_exists(JPATH_SITE .'/'.$img)) ? JA_Tools::jaResize($img,$width,$height$crop) :  '' ;
        return 
$imagesurl;
    } 
PHP-Code:
    function parseParams($params) {
        
$params html_entity_decode($paramsENT_QUOTES);
        
$regex "/\s*([^=\s]+)\s*=\s*('([^']*)'|\"([^\"]*)\"|([^\s]*))/";
        
preg_match_all($regex$params$matches);
        
         
$paramarray null;
         if(
count($matches)){
            
$paramarray = array();
                for (
$i=0;$i<count($matches[1]);$i++){ 
                    
$key $matches[1][$i];
                    
$val $matches[3][$i]?$matches[3][$i]:($matches[4][$i]?$matches[4][$i]:$matches[5][$i]);
                    
$paramarray[$key] = $val;
                }
            }
            return 
$paramarray;
    } 
PHP-Code:
    function processImage ( &$img$width$height$crop=1) {
        if(!
$img) return;
        
        
$img str_replace(JURI::base(),'',$img);
        
$img str_replace("'",'',$img);
        
$img rawurldecode($img);
        
$imagesurl = (file_exists(JPATH_SITE .'/'.$img)) ? Tools::jaResize($img,$width,$height$crop) :  '' ;
        return 
$imagesurl;
    }

    function 
jaResize($image,$max_width,$max_height$crop=1){
        
$path =JPATH_SITE
        
$imgInfo getimagesize($path.'/'.$image);
        
$width $imgInfo[0];
        
$height $imgInfo[1];
        if(!
$max_width && !$max_height) {
            
$max_width $width;
            
$max_height $height;
        }else{
            if(!
$max_width$max_width 1000;
            if(!
$max_height$max_height 1000;
        }
        
$x_ratio $max_width $width;
        
$y_ratio $max_height $height;
        
$dst = new stdClass();
        
$src = new stdClass();
        
$src->$src->0;
        
$dst->$dst->0;
        if (
$crop) {
            
$dst->$max_width;
            
$dst->$max_height;
            if ((
$width <= $max_width) && ($height <= $max_height) ) {
                
$src->$max_width;
                
$src->$max_height;
            }else{
                if (
$x_ratio $y_ratio) {
                    
$src->ceil($max_width/$y_ratio);
                    
$src->$height;
                } else {
                    
$src->$width;
                    
$src->ceil($max_height/$x_ratio);
                }
            }
            
$src->floor(($width-$src->w)/2);
            
$src->floor(($height-$src->h)/2);
        } else {
            
$src->$width;
            
$src->$height;
            if ((
$width <= $max_width) && ($height <= $max_height) ) {
                
$dst->$width;
                
$dst->$height;
            } else if ((
$x_ratio $height) < $max_height) {
                
$dst->ceil($x_ratio $height);
                
$dst->$max_width;
            } else {
                
$dst->ceil($y_ratio $width);
                
$dst->$max_height;
            }
        }

        
$ext strtolower(substr(strrchr($image'.'), 1)); // get the file extension
        
$rzname strtolower(substr($image0strpos($image,'.')))."_{$dst->w}_{$dst->h}.{$ext}"// get the file extension
        //
        
$resized $path.'/images/resized/'.$rzname
        if(
file_exists($resized)){
            
$smallImg getimagesize($resized);
            if ((
$smallImg[0] <= $dst->&& $smallImg[1] == $dst->h) ||
                (
$smallImg[1] <= $dst->&& $smallImg[0] == $dst->w)) {
                    return 
"http://www.php.de/images/resized/".$rzname;
            }
        }
        if(!
file_exists($path.'/images/resized/') && !mkdir($path.'/images/resized/',0755)) return '';
        
$folders explode('/',strtolower($image));
        
$tmppath $path.'/images/resized/';
        for(
$i=0;$i count($folders)-1$i++){
            if(!
file_exists($tmppath.$folders[$i]) && !mkdir($tmppath.$folders[$i],0755)) return '';
            
$tmppath $tmppath.$folders[$i].'/';
        }    

                
     switch (
$imgInfo[2]) {
        case 
1$im imagecreatefromgif($path.'/'.$image); break;
        case 
2$im imagecreatefromjpeg($path.'/'.$image);  break;
        case 
3$im imagecreatefrompng($path.'/'.$image); break;
        default: return 
'';  break;
     }
                
     
$newImg imagecreatetruecolor($dst->w$dst->h);
     
     
/* Check if this image is PNG or GIF, then set if Transparent*/  
     
if(($imgInfo[2] == 1) OR ($imgInfo[2]==3)){
        
imagealphablending($newImgfalse);
        
imagesavealpha($newImg,true);
        
$transparent imagecolorallocatealpha($newImg255255255127);
        
imagefilledrectangle($newImg00$dst->w$dst->h$transparent);
     }
     
imagecopyresampled($newImg$im$dst->x$dst->y$src->x$src->y$dst->w$dst->h$src->w$src->h);

        
//Generate the file, and rename it to $newfilename
     
switch ($imgInfo[2]) {
        case 
1imagegif($newImg,$resized); break;
        case 
2imagejpeg($newImg,$resized90);  break;
        case 
3imagepng($newImg,$resized); break;
        default: return 
'';  break;
     }
     
     return 
"http://www.php.de/images/resized/".$rzname;

    } 

Geändert von MeTurabdin (30.10.2009 um 21:40 Uhr).
MeTurabdin ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.10.2009, 21:36  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ALso ich gugge mir jetzt net deinen ganzen Code an. Aber damit sollte das doch einfach gehen...
PHP: imagecreate - Manual
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 30.10.2009, 21:38  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Gibts du dem <img> - Tag die Attribute width="200" und height="200" ?

// edit

Ups... ich werd' schon müde...

PHP-Code:
if ($width$params['width'] = $width;
                if (
$height$params['height'] = $height
Lass diese Zeilen weg, dann sollten sich die Attribute in Luft auflösen!
Asipak ist offline  
Alt 30.10.2009, 21:41  
Neuer Benutzer
 
Registriert seit: 09.08.2009
Beiträge: 6
PHP-Kenntnisse:
Anfänger
MeTurabdin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Destruction Beitrag anzeigen
ALso ich gugge mir jetzt net deinen ganzen Code an. Aber damit sollte das doch einfach gehen...
PHP: imagecreate - Manual
Das kann ich nicht so einfach ändern. Das ist ein komplexes Template. Ich möchte nur den vorhandenen Code anpassen.

Aber trotsdem danke ich dir für den Hinweis.
MeTurabdin ist offline  
Alt 30.10.2009, 21:51  
Neuer Benutzer
 
Registriert seit: 09.08.2009
Beiträge: 6
PHP-Kenntnisse:
Anfänger
MeTurabdin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Asipak Beitrag anzeigen
Gibts du dem <img> - Tag die Attribute width="200" und height="200" ?

// edit

Ups... ich werd' schon müde...

PHP-Code:
if ($width$params['width'] = $width;
                if (
$height$params['height'] = $height
Lass diese Zeilen weg, dann sollten sich die Attribute in Luft auflösen!
Ich habe es gändert ohne erfolg.
von:
PHP-Code:
        if ($image) {
            if (
$autoresize && function_exists('imagecreatetruecolor'
                && (
$image1 JA_Tools::processImage $params['src'], $width$height ))) {
                    
//$image = "<img src=\"".$image1."\" alt=\"{$row->title}\" $align />";
                    
$params['src'] = $image1;
            } else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            } 
in:
PHP-Code:
        if ($image) {
            if (
$autoresize && function_exists('imagecreatetruecolor'
                && (
$image1 JA_Tools::processImage $params['src'], $width$height ))) {
                    
//$image = "<img src=\"".$image1."\" alt=\"{$row->title}\" $align />";
                    
$params['src'] = $image1;
            } else {

            } 
MeTurabdin ist offline  
Alt 30.10.2009, 21:56  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hmm, da ich das Script nicht kenne, bleibt mir nur raten. Ich hätte da noch eine Idee:

PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
            
$image ''
=>
PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
$params['width'] = 60;
$params['height'] = 60;

            
$image ''
Ich weiß auch gar nicht, ob das die richtige Stelle ist.

Na, vielleicht meldet sich noch jemand!
Asipak ist offline  
Alt 30.10.2009, 22:02  
Neuer Benutzer
 
Registriert seit: 09.08.2009
Beiträge: 6
PHP-Kenntnisse:
Anfänger
MeTurabdin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Asipak Beitrag anzeigen
Hmm, da ich das Script nicht kenne, bleibt mir nur raten. Ich hätte da noch eine Idee:

PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
            
$image ''
=>
PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
$params['width'] = 60;
$params['height'] = 60;

            
$image ''
Ich weiß auch gar nicht, ob das die richtige Stelle ist.

Na, vielleicht meldet sich noch jemand!
Du bist echt super hilfreich gewesen.
Es war die richtige stelle. Nur habe ich nun das problem dass alle bilder auf 60x60 skaliert werden.
Es ist so, je nachdem welcher beitrag auf der startseite es ist, verschiedene bildgrößen erzegt werden.

Ich brauch das so, dass keine skalierung erfolgt.
Also diese Ausgabe:
<img style="float: left;" mce_style="float: left;" src="/images/resized/images/XYZ_60_60.jpg" mce_src="/images/XYZ.jpg" border="" />
MeTurabdin ist offline  
Alt 30.10.2009, 22:25  
Neuer Benutzer
 
Registriert seit: 09.08.2009
Beiträge: 6
PHP-Kenntnisse:
Anfänger
MeTurabdin befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Asipak Beitrag anzeigen
Hmm, da ich das Script nicht kenne, bleibt mir nur raten. Ich hätte da noch eine Idee:

PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
            
$image ''
=>
PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
$params['width'] = 60;
$params['height'] = 60;

            
$image ''
Ich weiß auch gar nicht, ob das die richtige Stelle ist.

Na, vielleicht meldet sich noch jemand!
Dankeeeeeeeeeeeeeeeee..............
Durch deine Hilfe habe ich es gelößt..

ich habe folgendes gemacht:

PHP-Code:
$width99 $width;
$height99 $height
PHP-Code:
} else {
                if (
$width$params['width'] = $width;
                if (
$height$params['height'] = $height;
            }
$params['width'] = $width99;
$params['height'] = $height99;

            
$image ''
MeTurabdin ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
variable mit onclick an php drombusch PHP Tipps 2009 8 30.08.2009 14:45
[Erledigt] PHP Image Upload &amp; Resize Problem da.eXecutoR PHP-Fortgeschrittene 10 14.08.2009 11:50
[Erledigt] Image vs. Text bead PHP Tipps 2009 24 03.04.2009 15:53
[Erledigt] Transparente Runde Ecken bei Thumbnial realisieren tomtaz PHP Tipps 2008 3 08.07.2008 01:20
Bilder Klasse snatch-ic Beitragsarchiv 1 13.06.2007 11:45
Problem mit Image as link ausloser stat text in java script. Bruce HTML, Usability und Barrierefreiheit 5 17.01.2006 11:31
[Erledigt] Von image booten Off-Topic Diskussionen 11 26.12.2005 22:53
curl-URL nach image Datei transferieren PHP-Fortgeschrittene 1 22.11.2005 12:47
link image als background AliceD HTML, Usability und Barrierefreiheit 4 31.08.2005 14:10
DPI Anzahl beim erzeugen von Bildern mit GD2 Lib einstellen? PHP Tipps 2005 13 28.04.2005 14:39
Alternative zu Acronis True Image 8.0? Off-Topic Diskussionen 6 01.04.2005 22:55
variable bei image klick mitgeben ckrentel PHP Tipps 2005 7 18.03.2005 14:27
image resize funzt nicht PHP Tipps 2005 1 10.03.2005 13:15
Image wird erst nach "Reload current page" richtig papalangi PHP Tipps 2005 7 02.02.2005 12:01
Problem mit Wasserzeichen auf Bildern pixelcut PHP-Fortgeschrittene 16 14.12.2004 02:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php resize image, resize image php, php resizeimage, resizeimage php, resize_image php, ja_tools::extractimage, php image resize, php resize images, http://www.php.de/php-einsteiger/60669-resize-image.html, php resizepicture, resize images php, ja_tools extractimage, php resize image transparent, resize image in php, php resize pictures onclick, $imginfo = getimagesize(k_path_images.$image->file);, regex img-width ändern php, php function resizeimage, php resize_image, php upload resizeimage

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum