PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Stark pixelige Bilder beim skalieren (http://www.selfphp.de/forum/showthread.php?t=24441)

Raul 13.10.2011 11:28:54

Stark pixelige Bilder beim skalieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich benötige etwas Hilf bei einem Script für Bildskalierung.

Ich erhalte bei dem Script beim hochladen von Bildern manchmal stark pixelige Bilder, als ob er ein ganz kleines Bild auf 1024 Pixel rechnet, woran kann das liegen.
Ich bin kein Experte bei PHP.

Grüsse,Raul



PHP-Code:

 //RESIZE -----------------------------------------------------
            //WICHTIG innerhalb RESIZE muss $bildname1 die Zahl angepasst werden 1,2,3,4,5 etc. 
            
if (strrchr ($bildname1 '.') == '.gif'  ||
                
strrchr ($bildname1 '.') == '.jpg'  ||
                
strrchr ($bildname1 '.') == '.jpeg' ||
                
strrchr ($bildname1 '.') == '.png'    )
            {
        
            
// Orginalbild
            
$TNbild       $bildname1;
        
            
// Bilddaten feststellen
            
$size       getimagesize($PicPathIn $TNbild);
            
$breite     $size[0];
            
$hoehe      $size[1];
            
$neueBreite 1024;          // <------------Pixel Breite
            
$neueHoehe  intval($hoehe $neueBreite $breite);
        
            if(
$size[2] == 1) {
                
// GIF
                
$altesBild ImageCreateFromGIF($PicPathIn $TNbild);
                
$neuesBild ImageCreateTrueColor($neueBreite$neueHoehe);
        
                
ImageCopyResized($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                
ImageGIF($neuesBild$PicPathOut $TNbild);
            }
        
            if(
$size[2] == 2) {
                
// JPG
                
$altesBild ImageCreateFromJPEG($PicPathIn $TNbild);
                
$neuesBild ImageCreateTrueColor($neueBreite$neueHoehe);
        
                
ImageCopyResized($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                
ImageJPEG($neuesBild$PicPathOut $TNbild);
            }
        
            if(
$size[2] == 3) {
                
// PNG
                
$altesBild ImageCreateFromPNG($PicPathIn $TNbild);
                
$neuesBild ImageCreateTrueColor($neueBreite,$neueHoehe);
        
                
ImageCopyResized($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                
ImagePNG($neuesBild$PicPathOut $TNbild);
            }
            
            }
            
//RESIZE END -------------------------------------------- 


DokuLeseHemmung 13.10.2011 17:18:41

AW: Stark pixelige Bilder beim skalieren
 
ImageCopyResampled() statt ImageCopyResized()

Raul 13.10.2011 19:34:09

AW: Stark pixelige Bilder beim skalieren
 
Vielen Dank, ich habe das geändert und vor allem eine "ist größer als" Option eingebaut, sodass alle Bilder über 1024 Pixel erst skaliert werden.
Falls das mal für jemand Interessant sein sollte:

PHP-Code:

            //RESIZE -----------------------------------------------------
            //WICHTIG innerhalb RESIZE muss $bildname1 die Zahl angepasst werden 1,2,3,4,5 etc. 
            
if (strrchr ($bildname1 '.') == '.gif'  ||
                
strrchr ($bildname1 '.') == '.jpg'  ||
                
strrchr ($bildname1 '.') == '.jpeg' ||
                
strrchr ($bildname1 '.') == '.png'    )
            {
        
            
// Orginalbild
            
$TNbild       $bildname1;
        
            
// Bilddaten feststellen
            
$size       getimagesize($PicPathIn $TNbild);
            
$breite     $size[0];
            
$hoehe      $size[1];
            if(
$breite 1024 )  {         // <------------ ab wieviel Pixel skaliert werden soll
              
$neueBreite 1024;          // <------------Pixel Breite
              
$neueHoehe  intval($hoehe $neueBreite $breite);
          
              if(
$size[2] == 1) {
                  
// GIF
                  
$altesBild ImageCreateFromGIF($PicPathIn $TNbild);
                  
$neuesBild ImageCreateTrueColor($neueBreite$neueHoehe);
          
                  
ImageCopyResampled($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                  
ImageGIF($neuesBild$PicPathOut $TNbild);
              }
          
              if(
$size[2] == 2) {
                  
// JPG
                  
$altesBild ImageCreateFromJPEG($PicPathIn $TNbild);
                  
$neuesBild ImageCreateTrueColor($neueBreite$neueHoehe);
          
                  
ImageCopyResampled($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                  
ImageJPEG($neuesBild$PicPathOut $TNbild);
              }
          
              if(
$size[2] == 3) {
                  
// PNG
                  
$altesBild ImageCreateFromPNG($PicPathIn $TNbild);
                  
$neuesBild ImageCreateTrueColor($neueBreite,$neueHoehe);
          
                  
ImageCopyResampled($neuesBild$altesBild0000$neueBreite$neueHoehe$breite$hoehe);
                  
ImagePNG($neuesBild$PicPathOut $TNbild);
              }
              }
            }
            
//RESIZE END -------------------------------------------- 



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

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.