php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 20-03-2008, 13:57
basilsue
 Newbie
Links : Onlinestatus : basilsue ist offline
Registriert seit: Mar 2008
Beiträge: 12
basilsue ist zur Zeit noch ein unbeschriebenes Blatt
Standard bild uploade qualitäts verlust

Hallo Zusammen,
Erst wenn man Total verzweifelt ist probiert man die Hilfe von PHP Profis zu erhalten. In dem Sinne: schon mal danke fürs weiterlesen.

Problembeschreibung:
Ich habe eine Funktion erstellt welche auch "Funktioniert". Aber die Qualität der Bilder wird schlecht. (Bild schärfe)

Auf dem Server ist die neuste GDLIB intalliert. Kann mir bitte einer Weiterhelfen?

Viele Dank im Voraus, bin für jeden Tipp dankbar!

(für alle die noch eine funktion dieser art suchen: feel free to use it )

PHP-Code:
<?php
# Thumbnail eines Bildes erstellen
    /*
        $source     = Wo liegt das zu verkleinerte Bild
        $mks        = der Aktuelle Ordner wo das Bild liegt
        $file        = neuer File name für dieses Bild
        $fileext     = ist es ein gif oder jpg (wird anhand eien andere funktion bestimmt)
        $dest         = Wo wird das neue (verkleinerte) Bild gespeichert
        $img_width     = Was ist die neue Breite des Bildes
        $img_height = Was ist die neue Höhe des Bildes
        $logoadd    = 0 = es wird kein wasserzeichen logo gesetzte; 1 = es wird eiens gesetzt
        
    */
function MakeThumb($source,$mks,$file,$fileext,$img_width,$img_height,$logoadd=0) {

 
// hier wird der File name definiert
$dest $mks.$file."-".$img_width.$fileext;
            
$FormatArr getimagesize($source);
//Breite des Aktuellen Bild wird in die Variabeln src_width und src_height geschrieben
list($src_width$src_height) = getimagesize($source);
                
## Breite des Thumbniles wird berechnet (neue breite)
// Wenn die Breite Grösser oder Gleich ist wie die Höhe
if($src_width >= $src_height): 
    
// Thumb Breite (aus $img_width)
    
$new_image_width $img_width
    
// Thumb Höhe wird berechnet
    
$new_image_height $src_height $img_width $src_width
endif;

## Höhe des Thumbniles wird berechnet (neue höhe)
// Wenn die Breite kleiner ist als die Höhe
if($src_width $src_height):
    
// Thumb Höhe (aus img_width)          
    
$new_image_height $img_width
    
// Thumb Breite wird berechnet
    
$new_image_width $src_width $img_height $src_height
endif;

## Erzeugt ein neus (leeres) Bild
$new_image imagecreatetruecolor($new_image_width$new_image_height);

## Kopiert und Schneidet ein Bild zu
/*
Das Bild aus $image wird in des neue Bild $new_image eingefügt in der X und Y Achse die Position 0. 
Neue Breite und Höhe von $image wird angepasst. Ausgabe von $new_image (Be Erfolg)
*/
switch($FormatArr[2]) {

case 
:
    
//Das Bild öffnen, ist es vorhanden? (GIF FORMAT)
    
$image = @imagecreatefromgif($source);
    
imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);

    if(
imagegif($new_image$dest100)): return true; else: return false; endif;
break;    

case 
:    
    
//Das Bild öffnen, ist es vorhanden? (JPG FORMAT)
    
$image = @imagecreatefromjpeg($source);
    
imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);
    if(
imagejpeg($new_image$dest100)):
        
// wasserzeichen hinzufügen
        
if(!empty($logoadd) && $img_width=="590"):
        
$origimage $dest;
        
$logoimage "daswasserzeichenlogo.png";
        
$origsize getimagesize($origimage);
        
$logosize getimagesize($logoimage);
        
$logo_im imagecreatefrompng($logoimage);
        
$orig_im imagecreatefromjpeg($origimage);
        
imagecopy($orig_im$logo_im$origsize[0] - $logosize[0], $origsize[1] - $logosize[1], 00$logosize[0], $logosize[1]);
        
imagejpeg($orig_im$dest100);
        endif;
        
        return 
true;     
    else: 
        return 
false; endif;
break;

default : return 
false; break;
}    
}
?>

Geändert von basilsue (20-03-2008 um 18:08 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 20-03-2008, 14:04
dani_o
 PHP Senior
Links : Onlinestatus : dani_o ist offline
Registriert seit: Jun 2003
Ort: Lichtenstein/Sa.
Beiträge: 1.599
dani_o befindet sich auf einem aufstrebenden Ast
Standard

code umbrechen wäre hilfreich.
Zitat: Qualität wird schlecht - Bildschärfe

wie schlecht? kann man nix mehr erkennen oder normal unscharf?
bedenke das bei einem thumbnail ja weniger pixel vorhanden sind - daher auch eine schlechtere Quali ... habs getestet - bei mir sehen die thumbs recht vernünftig aus ;-)

nur gif und jpeg ? was iss mit png ?
__________________
Signatur-Text ...
Mit Zitat antworten
  #3 (permalink)  
Alt 20-03-2008, 14:16
basilsue
 Newbie
Links : Onlinestatus : basilsue ist offline
Registriert seit: Mar 2008
Beiträge: 12
basilsue ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke erstmal für das Antwort. Sehr freundliche.

Qualität: Mann kann schon etwas erkennen, ohne Probleme sogar, aber wenn ich es mit dem Original Bild vergleiche wirkt es "BLASSER" und nicht ganz so Scharf wie das Original. Die Thumbnails habe eine grösse von 600px (Sind ja dann eigentlich keine Thumbnails mehr )

Der Fotoupload muss leider als JPG passieren, habe deshalb die anderen Formate nicht ausprobiert.

... an diesem Problem arbeite ich nun schon seit Wochen einfach traurig.

Danke nochmals für jede Hilfe, Tipps. Ich war noch in einem anderen Forum: die haben mir nicht einmal einen Post zurück geschrieben.
Mit Zitat antworten
  #4 (permalink)  
Alt 20-03-2008, 14:18
dani_o
 PHP Senior
Links : Onlinestatus : dani_o ist offline
Registriert seit: Jun 2003
Ort: Lichtenstein/Sa.
Beiträge: 1.599
dani_o befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht hilft dir das hier:
PHP-Code:
<?php

     
/*##############################################
     #          - Thumbnail-Script v1.3 -           #
     # Generating thumbnails 'on-the-fly' with PHP  #
     #                                              #
     #  (c) by Christian Lamine, FlashDreams OHG    #
     #          [url]http://www.flashdreams.de/[/url]          #
     #                                              #
     # This script may be freely used, distributed  #
     # and modified without any charge as long as   #
     # this copyright information is included.      #
     #                                              #
     # Any commercial selling of this script is     #
     # prohibited.                                  #
     #                                              #
     # The author is not responsible for possible   #
     # damage which may result from the application #
     # of this script, neither direct nor indirect. #
     # Use at your own risk!                        #
     ##############################################*/

     
error_reporting(0);
     
$x $_REQUEST['x'];
     
$y $_REQUEST['y'];
     
$image $_REQUEST['image'];
 
     
$types = array (=> "gif""jpeg""png""swf""psd""wbmp");

     
define ('cache''cache/');

     
$cachedir substr($HTTP_GET_VARS['image'],0,strrpos($HTTP_GET_VARS['image'],'/') + 1).cache;
     !
is_dir ($cachedir)
          ? 
mkdir ($cachedir0777)
          : 
system ("chmod 0777 ".$cachedir);

     (!isset (
$x) || ereg ('^[0-9]{1,}$'$x$regs)) &&
     (!isset (
$y) || ereg ('^[0-9]{1,}$'$y$regs)) &&
     (isset (
$x) || isset ($y))
          ? 
true
          
: DIE ('Fehlende(r) oder ungültige(r) Größenparameter!');

     !isset (
$resize) || !ereg ('^[0|1]$'$resize$regs)
          ? 
$resize 0
          
$resize;

     !isset (
$aspectratio) || !ereg ('^[0|1]$'$aspectratio$regs)
          ? isset (
$x) && isset ($y)
                 ? 
$aspectratio 1
                 
$aspectratio 0
          
$aspectratio;

     !isset (
$image)
          ? DIE (
'Es wurde kein Bild angegeben!')
          : !
file_exists($image)
               ? DIE (
'Die angegebene Datei konnte nicht auf dem Server gefunden werden!')
               : 
false;

     
$imagedata getimagesize($image);

     !
$imagedata[2] || $imagedata[2] == || $imagedata[2] == 5
          
? DIE ('Bei der angegebenen Datei handelt es sich nicht um ein Bild!')
          : 
false;
 
     eval (
'
     if (!(imagetypes() & IMG_'
.strtoupper($types[$imagedata[2]]).')) {
          DIE ("Das ".strtoupper($types[$imagedata[2]])."-Format wird nicht unterstützt!");
     }
     '
);

     !isset (
$x)
          ? 
$x floor ($y $imagedata[0] / $imagedata[1])
          : 
$x;
 
     !isset (
$y)
          ? 
$y floor ($x $imagedata[1] / $imagedata[0])
          : 
$y;
 
     if (
$aspectratio && isset ($HTTP_GET_VARS['x']) && isset ($HTTP_GET_VARS['y'])) {
          if (
$imagedata[0] > $imagedata[1]) {
               
$y floor ($x $imagedata[1] / $imagedata[0]);
          } else if (
$imagedata[1] > $imagedata[0]) {
               
$x floor ($y $imagedata[0] / $imagedata[1]);
          }
     }

     
$thumbfile substr ($HTTP_GET_VARS['image'], strrpos ($HTTP_GET_VARS['image'], '/') + 1);
     if (
file_exists ($cachedir.$thumbfile)) {
          
$thumbdata getimagesize ($cachedir.$thumbfile);
          
$thumbdata[0] == $x && $thumbdata[1] == $y
               
$iscached true
               
$iscached false;
     } else {
          
$iscached false;
     }

     if (!
$iscached) {
          (
$imagedata[0] > $x || $imagedata[1] > $y) ||
          ((
$imagedata[0] < $x || $imagedata[1] < $y) && $resize)
               ? 
$makethumb true
               
$makethumb false;
     } else {
          
$makethumb false;
     }

     
Header ("Content-Type: image/".$types[$imagedata[2]]);
 
     if (
$makethumb) {
          
$image call_user_func("imagecreatefrom".$types[$imagedata[2]], $image);
          
$thumb imagecreate ($x$y);
          
imagecopyresized ($thumb$image0000$x$y$imagedata[0], $imagedata[1]);
          
call_user_func("image".$types[$imagedata[2]], $thumb$cachedir.$thumbfile);
          
imagedestroy ($image);
          
imagedestroy ($thumb);
          
$image $cachedir.$thumbfile;
     } else {
          
$iscached
               
$image $cachedir.$thumbfile
               
$image $HTTP_GET_VARS['image'];
     }
     
$image fopen ($image"rb");
     
fpassthru ($image);
     
fclose ($image);
 
?>
__________________
Signatur-Text ...
Mit Zitat antworten
  #5 (permalink)  
Alt 20-03-2008, 14:39
basilsue
 Newbie
Links : Onlinestatus : basilsue ist offline
Registriert seit: Mar 2008
Beiträge: 12
basilsue ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Passiert leider nicht viel. Habe die Variabeln:

$x = $_REQUEST['x'];
$y = $_REQUEST['y'];
$image = $_REQUEST['image'];

definiert. Es steht lediglich der Aktuelle Dokument Pfad auf der Seite-
Mit Zitat antworten
  #6 (permalink)  
Alt 20-03-2008, 14:47
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@TS
Jetzt brich erstmal endlich deinen Code so um, dass man nicht horizontal Scrollen muss !!
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 20-03-2008, 14:51
dani_o
 PHP Senior
Links : Onlinestatus : dani_o ist offline
Registriert seit: Jun 2003
Ort: Lichtenstein/Sa.
Beiträge: 1.599
dani_o befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von basilsue
Passiert leider nicht viel. Habe die Variabeln:

$x = $_REQUEST['x'];
$y = $_REQUEST['y'];
$image = $_REQUEST['image'];

definiert. Es steht lediglich der Aktuelle Dokument Pfad auf der Seite-
Bsp. aufruf:

PHP-Code:
<img src="thumb.php?image=1.png&x=80&y=80"
__________________
Signatur-Text ...
Mit Zitat antworten
  #8 (permalink)  
Alt 20-03-2008, 18:07
basilsue
 Newbie
Links : Onlinestatus : basilsue ist offline
Registriert seit: Mar 2008
Beiträge: 12
basilsue ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Natürlich mache ich alles damit ich eure Hilfe geniessen kann. Ich habe nun den Code umgebrochen.

Ich habe einen Breiten Bildschirm und das deshalb nicht bemerkt.

PHP-Code:
<?php
# Thumbnail eines Bildes erstellen
    /*
        $source     = Wo liegt das zu verkleinerte Bild
        $mks        = der Aktuelle Ordner wo das Bild liegt
        $file        = neuer File name für dieses Bild
        $fileext     = ist es ein gif oder jpg (wird anhand eien andere funktion bestimmt)
        $dest         = Wo wird das neue (verkleinerte) Bild gespeichert
        $img_width     = Was ist die neue Breite des Bildes
        $img_height = Was ist die neue Höhe des Bildes
        $logoadd    = 0 = es wird kein wasserzeichen logo gesetzte; 1 = es wird eiens gesetzt
        
    */
function MakeThumb($source,$mks,$file,$fileext,$img_width,$img_height,$logoadd=0) {

 
// hier wird der File name definiert
$dest $mks.$file."-".$img_width.$fileext;
            
$FormatArr getimagesize($source);
//Breite des Aktuellen Bild wird in die Variabeln src_width und src_height geschrieben
list($src_width$src_height) = getimagesize($source);
                
## Breite des Thumbniles wird berechnet (neue breite)
// Wenn die Breite Grösser oder Gleich ist wie die Höhe
if($src_width >= $src_height): 
    
// Thumb Breite (aus $img_width)
    
$new_image_width $img_width
    
// Thumb Höhe wird berechnet
    
$new_image_height $src_height $img_width $src_width
endif;

## Höhe des Thumbniles wird berechnet (neue höhe)
// Wenn die Breite kleiner ist als die Höhe
if($src_width $src_height):
    
// Thumb Höhe (aus img_width)          
    
$new_image_height $img_width
    
// Thumb Breite wird berechnet
    
$new_image_width $src_width $img_height $src_height
endif;

## Erzeugt ein neus (leeres) Bild
$new_image imagecreatetruecolor($new_image_width$new_image_height);

## Kopiert und Schneidet ein Bild zu
/*
Das Bild aus $image wird in des neue Bild $new_image eingefügt in der X und Y Achse die Position 0. 
Neue Breite und Höhe von $image wird angepasst. Ausgabe von $new_image (Be Erfolg)
*/
switch($FormatArr[2]) {

case 
:
    
//Das Bild öffnen, ist es vorhanden? (GIF FORMAT)
    
$image = @imagecreatefromgif($source);
    
imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);

    if(
imagegif($new_image$dest100)): return true; else: return false; endif;
break;    

case 
:    
    
//Das Bild öffnen, ist es vorhanden? (JPG FORMAT)
    
$image = @imagecreatefromjpeg($source);
    
imagecopyresampled($new_image$image0000$new_image_width,$new_image_height$src_width$src_height);
    if(
imagejpeg($new_image$dest100)):
        
// wasserzeichen hinzufügen
        
if(!empty($logoadd) && $img_width=="590"):
        
$origimage $dest;
        
$logoimage "daswasserzeichenlogo.png";
        
$origsize getimagesize($origimage);
        
$logosize getimagesize($logoimage);
        
$logo_im imagecreatefrompng($logoimage);
        
$orig_im imagecreatefromjpeg($origimage);
        
imagecopy($orig_im$logo_im$origsize[0] - $logosize[0], $origsize[1] - $logosize[1], 00$logosize[0], $logosize[1]);
        
imagejpeg($orig_im$dest100);
        endif;
        
        return 
true;     
    else: 
        return 
false; endif;
break;

default : return 
false; break;
}    
}
?>
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:19 Uhr.