Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Farbwerte werden beim Skalieren von Bildern verdreht
Antwort
 
Themen-Optionen
Alt 29.12.2006, 12:10   Nach oben    #1
suppenmann
Guy with soup
 
Registriert seit: 27.05.2006
Beiträge: 44
Standard Farbwerte werden beim Skalieren von Bildern verdreht

Hi,
ich hab ein Problem beim Skalieren von jpegs.
Dafür verwenden wir folgendes Skript "thump.php":
Code:
<?php
if (file_exists($_SERVER['DOCUMENT_ROOT']."/gallery/images/thumbs/".$_GET['maximagesize']."/".$_GET['id'].".jpg"))
  {
    header("Content-Type: image/jpeg");
    readfile($_SERVER['DOCUMENT_ROOT']."/gallery/images/thumbs/".$_GET['maximagesize']."/".$_GET['id'].".jpg");
    exit();
  }
include($_SERVER['DOCUMENT_ROOT']."/user.php");
include($_SERVER['DOCUMENT_ROOT']."/init.php");
include($_SERVER['DOCUMENT_ROOT']."/gallery/image.php");

$bild = new image($_GET['id']);
if (!$_GET['maximagesize'])
  $_GET['maximagesize']=100; //Maximale Bildgröße
$bild = new image($_GET['id']);
$bild1=imagecreatefromjpeg($bild->link);
$sw=min($bild->width * $_GET['maximagesize'] / $bild->height, $_GET['maximagesize']);
$sh=min($bild->height * $_GET['maximagesize'] / $bild->width, $_GET['maximagesize']);
//$bild2=imagecreate($sw,$sh);
$bild2 = ImageCreateTrueColor($_GET['maximagesize'], round($_GET['maximagesize']/ imagesx($bild1) * imagesy($bild1)));
//imagecopyresized($bild2, $bild1, 0, 0, 0, 0, $_GET['maximagesize'], imagesy($bild2), imagesx($bild1), imagesy($bild1));
imagecopyresized($bild2,$bild1,0,0,0,0,$sw,$sh,$bild->width,$bild->height);
if (!is_dir($_SERVER['DOCUMENT_ROOT']."/gallery/images/thumbs/".$_GET['maximagesize']))
  mkdir($_SERVER['DOCUMENT_ROOT']."/gallery/images/thumbs/".$_GET['maximagesize']);
imagejpeg($bild2, $_SERVER['DOCUMENT_ROOT']."/gallery/images/thumbs/".$_GET['maximagesize']."/".$_GET['id'].".jpg");
header("Content-Type: image/jpeg");
imagejpeg($bild2);
imagedestroy($bild2);
?>
die gewünschte Breite wird über die URL per $_GET['maximagesize'] angeben und das zu skalierende Bild per eindeutiger ID.

Das Problem ist nun, dass beim Skalieren, die Farbwerte vertauscht werden, so dass das ganze dann so aussieht:
http://www.schwiegervater.de/gallery.../P3090004a.jpg
Das Skript ist schon mal auf einem anderen Server im Einsatz gewesen und da hat es einwandfrei funktioniert.

Auf dem Server wo es nicht läuft ist PHP5 installiert.
Schonmal im vorraus Danke für hilfreiche Tips,

lg,
André
__________________
Helft mir bei der Facharbeit

Neu im Pressearchiv der BR Gartenland
-Musik - nur ein Konsumgut?
suppenmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 12:14   Nach oben    #2
Chr!s
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Schau mal im Manual:
http://de2.php.net/manual/en/functio...opyresized.php
Zitat:
Note: There is a problem due to palette image limitations (255+1 colors). Resampling or filtering an image commonly needs more colors than 255, a kind of approximation is used to calculate the new resampled pixel and its color. With a palette image we try to allocate a new color, if that failed, we choose the closest (in theory) computed color. This is not always the closest visual color. That may produce a weird result, like blank (or visually blank) images. To skip this problem, please use a truecolor image as a destination image, such as one created by imagecreatetruecolor().
Benutz lieber mal diese Fnuktion:
http://de2.php.net/manual/en/functio...yresampled.php

//edit
Zitat:
Das Skript ist schon mal auf einem anderen Server im Einsatz gewesen und da hat es einwandfrei funktioniert.
Oh, überlesen ..
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 12:21   Nach oben    #3
robo47
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.188
Standard

Zitat:
Zitat von Chr!s Beitrag anzeigen
//edit
Zitat:
Das Skript ist schon mal auf einem anderen Server im Einsatz gewesen und da hat es einwandfrei funktioniert.
Oh, überlesen ..

ältere/andere Version von gdlib vieleicht ?
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 12:28   Nach oben    #4
suppenmann
Guy with soup
 
Registriert seit: 27.05.2006
Beiträge: 44
Standard

Hm aufm dem funktionierenden läuft 1.6.2 und auf dem anderen läuft
2.0.28.
__________________
Helft mir bei der Facharbeit

Neu im Pressearchiv der BR Gartenland
-Musik - nur ein Konsumgut?
suppenmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 13:03   Nach oben    #5
Basti
Erfahrener Benutzer
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 750
Standard

Mit imagecopyresampled() solltest du aber hinkommen. Mit dem optionalen dritten Parameter von imagejpeg() kannst du noch die Komprimierung des JPEG verringern. Für die Ausgabe den zweiten Parameter dann auf null setzen oder direkt readfile() verwenden.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 13:08   Nach oben    #6
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Passt jetzt nicht exakt zu dem Thema hier, aber wegen
Zitat:
Zitat von Basti Beitrag anzeigen
Mit dem optionalen dritten Parameter von imagejpeg() kannst du noch die Komprimierung des JPEG verringern.
hänge ich das hier einfach mal an:

Compressing JPEG images with JPEG Reducer
-> http://devzone.zend.com/node/view/id/1410
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.12.2006, 13:22   Nach oben    #7
suppenmann
Guy with soup
 
Registriert seit: 27.05.2006
Beiträge: 44
Standard

hab den Fehler gefunden. Das Bild wurde von unserem Galeriesystem nach dem Hochladen bereits einmal auf eine mittlere Größe skaliert, mit Funktionen, die anscheined bei der neuern gdlib nicht funktionieren(imagecreate() statt ImageCreateTrueColor()). die thumb.php hat alles richtig gemacht, nur war das Ausgangsbild bereits kaputt und deshalb war auchg das Ergebnis recht unschön.

Ich hab da wohl ein bisschen zu früh gepostet. Sorry

lg,
André
__________________
Helft mir bei der Facharbeit

Neu im Pressearchiv der BR Gartenland
-Musik - nur ein Konsumgut?
suppenmann ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

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 Aus


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

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44