php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.09.2006, 11:43  
Erfahrener Benutzer
 
Registriert seit: 01.02.2004
Beiträge: 550
cytrobic
Standard Denkanstoss Thumbnailer x-y problem

Mein Code:
PHP-Code:
         $size getimagesize($file['tmp_name']);
         
$ratio 1;

         
$newx $size[0];
         
$newy $size[1];
    
         if(
$newx 100 || $newy 132){
           if(
$newx $newy){
             
$ratio $newx $newy;
             while(
$newx 100 || $newy 132){
               
$newx $newx $ratio;
               
$newy $newy 1;
             }
             
$newx round($newx0);
           }
           if(
$newx $newy){
             
$ratio $newy $newx;
             while(
$newx 100 || $newy 132){
               
$newx $newx 1;
               
$newy $newy $ratio;
             }
             
$newy round($newy0);
           }
           if(
$newx $newy){
             while(
$newx 100 || $newy 132){
               
$newx $newx 1;
               
$newy $newy 1;
             }
           }
           
$src imagecreatefromjpeg($file['tmp_name']);
           
$tar imagecreatetruecolor($newx$newy);
           
imagecopyresized($tar$src0000$newx$newy$size[0], $size[1]);
           
imagejpeg($tar"users/".$id.".jpg"75);
           
chmod("users/".$id.".jpg"0777); 
funktioniert soweit, mein Problem ist nur das einige Bilder kleiner sind als 100 in der breite und 132 in der höhe ... wie kann das sein ? Ausserdem sind die sehr pixelig aber dazu bau ich noch imagecopyresampled() ein dann sollte das behoben sein. Mein Problem ist die Auflösung.
__________________
keine
cytrobic ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.09.2006, 12:04  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
while($newx 100 || $newy 132){
               
$newx $newx $ratio;
               
$newy $newy 1;
             } 
wozu soll das genau gut sein?
PHP-Code:
if($newx $newy
man vergleicht normalerweise mit ==
mach doch
PHP-Code:
$size getimagesize($file['tmp_name']);
$old_x $size[0];
$old_y $size[1];
(
$old_x >= $old_y) ? $v $old_x 132 $v $old_Y 100
$new_x intval($old_x $v);
$new_y intval($old_y $v); 
und nimm statt imagecopyresized vielleicht besser imagecopyresampled

EDIT: Rechtschreibfehler: "$old_Y / 100;" muss natürlich "$old_y / 100;" heißen
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 06.09.2006, 12:19  
Erfahrener Benutzer
 
Registriert seit: 01.02.2004
Beiträge: 550
cytrobic
Standard

sehr schöne variante und funktioniert tadellos, danke freak
imagecopyresampled() hab ich auch eingebaut, pixelbrei ade
__________________
keine
cytrobic ist offline  
Alt 06.09.2006, 13:13  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von cytrobic
sehr schöne variante und funktioniert tadellos
Nur, solange die beiden Maximalwerte identisch sind. Gibst du z.B. eine maximale Breite von 500 an, sowie eine Maximalhöhe von 100 und übergibst ein Bild 400x100, dann gäbe es da ja eigentlich nichts zu verkleinern.

Da 400 aber < 500 wird bei dem Skript das Bild jedoch unnötigerweise um den Faktor 500/400 skaliert.

Hier meine Lösnug dieses Problems:
http://www.phpfriend.de/forum/ftopic59145.html#408742

Basti

PS:
Ich freu mich natürlich, wenn jmand eine elegantere Lösung anbietet, als die Fälle alle einzeln durchzugehen.
Basti ist offline  
Alt 06.09.2006, 14:53  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Nur, solange die beiden Maximalwerte identisch sind
was meinst du...? 132 und 100 sind nicht identisch und es funktioniert....
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 06.09.2006, 19:30  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Es funktioniert?

PHP-Code:
<?php

$aTestValues 
= array(
    array(array( 
11,  10), array( 11,  10)),
    array(array( 
11100), array( 11100)),
    array(array(
132,  10), array(132,  10)),
    array(array(
132100), array(132100)),
    array(array(
100200), array( 50100)),
    array(array(
132200), array( 66100)),
    array(array(
396,  90), array(132,  30)),
    array(array(
264100), array(132,  50)),
    array(array(
150200), array( 75100)),
    array(array(
386210), array(132,  70)),
    array(array(
110110), array(100100)),
    array(array(
131100), array(131100)),
    array(array(
130100), array(130100)),
);

function 
calcNewDims($size)
{
    
$old_x $size[0];
    
$old_y $size[1];
    (
$old_x >= $old_y) ? $v $old_x 132 $v $old_y 100;
    
$new_x intval($old_x $v);
    
$new_y intval($old_y $v);

    return array(
$new_x$new_y);
}

test($aTestValues);
exit;


function 
test($aTestValues)
{

    echo 
'<pre>';

    foreach (
$aTestValues as $aTestValue) {

        
$aGiven    $aTestValue[0];
        
$aExpected $aTestValue[1];
        
$aResult   calcNewDims($aGiven);

        
$sTestName sprintf(
            
'(%d,%d) -&gt; (%d,%d) | res: (%d,%d)
'
,
            
$aGiven[0],
            
$aGiven[1],
            
$aExpected[0],
            
$aExpected[1],
            
$aResult[0],
            
$aResult[1]
        );

        
assertEqual($sTestName$aResult$aExpected);
    }
    echo 
'</pre>';
}

function 
assertEqual($sMessage$mVal1$mVal2)
{
    print 
$mVal1 === $mVal2 'passed' 'failed';
    echo 
': '$sMessage"\n";
}
?>
Code:
failed: (11,10) -> (11,10) | res: (132,120)  <- vergroessern wollte er nicht - ausserdem zu hoch!
passed: (11,100) -> (11,100) | res: (11,100)
passed: (132,10) -> (132,10) | res: (132,10)
passed: (132,100) -> (132,100) | res: (132,100)
passed: (100,200) -> (50,100) | res: (50,100)
passed: (132,200) -> (66,100) | res: (66,100)
passed: (396,90) -> (132,30) | res: (132,30)
passed: (264,100) -> (132,50) | res: (132,50)
passed: (150,200) -> (75,100) | res: (75,100)
failed: (386,210) -> (132,70) | res: (132,71)  <- Rundungsfehler
failed: (110,110) -> (100,100) | res: (132,132)  <- zu hoch!
failed: (131,100) -> (131,100) | res: (132,100)  <- Rundungsfehler
failed: (130,100) -> (130,100) | res: (132,101)  <- zu hoch!
Was verstehst du unter "Funktionieren"?

Basti
Basti ist offline  
Alt 06.09.2006, 20:51  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja das hatte ich schon verstanden. ich frage mich nur, was du mit "identischen maximalwerten" da meinst? :wink:
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 06.09.2006, 20:58  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Wenn die maximale Breite ud die max. Höhe identisch sind (z.B. 100, 100), dann müsste dein Skript eigentlich passen (wobei ichs nicht getetstet hab) - bis auf die Vergrößerung eben.

Basti
Basti 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
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Array Problem [Ansatz ?] PHP Tipps 2005 0 27.01.2005 18:24
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
thump nailer spinnt, \xy problem\

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:42 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.