- Ad -
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! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-04-2004, 05:27
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard ImageCreateFromPNG - Farbverfälschung(en)

Nachdem ich eine PNG Datei mit ImageCreateFromPNG() bearbeite und wieder ausgebe, ändern sich (ein wenig) die Farben. Für den Einsatzzweck, den ich da habe, ist das seeehr unschön .

Original:


Kopie:


Nebeneinander (um den Unterschied zu sehen):


Zum Nachvollziehen folgender (relevanter) Code (sind natürlich eigentlich ziiig Codezeilen im Skript, habe aber schon diese Zeilen als "Übeltäter" entlarven können):

PHP-Code:
<?php
header 
("Content-type: image/png");
$im ImageCreateFromPNG("cat-title-bg-1.png");
ImagePNG($im);
?>
Wie komme ich um den unschönen Effekt herum?!

Gruß,
Christian

Zitat:
Aus phpinfo();

gd

GD Support - enabled
GD Version - bundled (2.0 compatible)
FreeType Support - enabled
FreeType Linkage - with freetype
T1Lib Support - enabled
GIF Read Support - enabled
JPG Support - enabled
PNG Support - enabled
WBMP Support - enabled
__________________
Mit Zitat antworten
  #2 (permalink)  
Alt 15-04-2004, 09:42
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

probier mal header() + readfile() statt image*()
__________________
-
Mit Zitat antworten
  #3 (permalink)  
Alt 15-04-2004, 14:28
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

Das Bild wird vor der Ausgabe ja noch weiter bearbeitet .

Wie gesagt... nur ein Schnipsel...

Muss es also irgendwie als ImageHandle bekommen...

Gruß,
Christian
__________________
Mit Zitat antworten
  #4 (permalink)  
Alt 15-04-2004, 14:51
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.077
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

imagecreatetruecolor()?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 15-04-2004, 14:52
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von harakiri
Wie gesagt... nur ein Schnipsel...
tolle wurst ... wie kannst du da eine hilfreichere antwort erwarten? .... wie sieht denn der rest vom "schnipsel" aus?
__________________
-
Mit Zitat antworten
  #6 (permalink)  
Alt 15-04-2004, 15:04
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

Der Rest vom Schnipsel ist irrelevant ? Hab ich doch geschrieben, dass alles an der ImageCreateFromPNG Funktion hängt... Und wenn ich schreibe, dass da noch etliche Zeilen ins Script gehören, kannst dir doch denken, dass ich nicht einfach nur ein Bild ausgeben möchte .

Folgendes: Habe ein Hintergrund-Bild. Dieses wird via eben dieser Funktion geladen und soll dann via ImageCopy mit diversen anderen Objekten versehen werden.

Die Verfälschung - worum es mir hier geht - findet aber statt, in dem Moment, wo ich ImageCreateFromPNG(); nutze!

Habe mal folgendes Script ON gestellt: (http://www.team-atm.de/download/phpsr1.php)
PHP-Code:
<html>
<?php
$im 
ImageCreateFromPNG("cat-title-bg-1.png");
ImagePNG($im"temp/cat-title-bg-2.png");
?>
<img src="cat-title-bg-1.png" border="0" alt="0"><img src="temp/cat-title-bg-2.png" border="0" alt="0">
</html>
Da wird nochmal live das ganze für euch "kopiert" und verglichen...


@Tobiaz: Kann ich mit ImageCreateTrueColor() ein vorhandenes Bild laden?! Damit erstelle ich doch nur ein komplett neues...
__________________
Mit Zitat antworten
  #7 (permalink)  
Alt 15-04-2004, 15:22
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von harakiri
Und wenn ich schreibe, dass da noch etliche Zeilen ins Script gehören, kannst dir doch denken, dass ich nicht einfach nur ein Bild ausgeben möchte .
... nee, meine glaskugel ist grad in der wäsche :P


a) kann es sein, dass du ein 24bit png als basis hast ... könnte die farbverschiebung erklären

plan b)
- öffne deine ausgangs-datei mit imagecreatefrompng() und schreib sie als duplikat auf die platte
- erzeuge nochmal deine gegenüberstellung
-- original vs imagecreatefrompng(original)
-- duplikat vs imagecreatefrompng(duplikat)
---- wenns hier keinen unterschied gibt, lass halt überall mal imagecreatefrompng() drüberlaufen und arbeite mit den dups weiter

... wenn du eh noch manipulationen vornimmst kannst du ohn kopie uU ein farbpalettenproblem bekommen ...
__________________
-
Mit Zitat antworten
  #8 (permalink)  
Alt 15-04-2004, 15:36
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

Done: http://www.team-atm.de/download/phpsr1.php

Aber:

Ich möchte jetzt nicht alle Dateien "verfälscht" nutzen (nur als Notlösung... kam mir auch schon in den Sinn). Wir streben ja alle nach Perfektion .

Hast du sonst noch eine Idee, wie ich das Bild:

a) Abspeichern muss

oder

b) sonst noch ohne Farbverlust bearbeiten kann?

Gruß,
Christian
__________________
Mit Zitat antworten
  #9 (permalink)  
Alt 15-04-2004, 15:57
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von harakiri
Hast du sonst noch eine Idee, wie ich das Bild:
a) Abspeichern muss
probier mal, aus dem photoshop => für web speichern => png-8
Zitat:
b) sonst noch ohne Farbverlust bearbeiten kann?
1. auf jpeg umsteigen ....
2. mit imagemagick arbeiten (fänd ich suboptimal)
3. hintergrund-bild nicht bearbeiten sondern andere elemente mit transparenz und css-layern drüberlegen

... ansonsten bin ich ratlos.
__________________
-
Mit Zitat antworten
  #10 (permalink)  
Alt 15-04-2004, 16:07
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

a) -> schon alle Variationen probiert

b) 1 -> Letzte Möglichkeit... werds testen Schlechte Qualität!
2 -> kommt nicht in Frage
3 -> Solange PNG nicht 100% Unterstützung findet: No way

Danke auf jeden Fall für die Ratschläge!

Gruß,

Christian
__________________

Geändert von harakiri (15-04-2004 um 16:13 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 15-04-2004, 16:18
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von harakiri
b) 1 -> Letzte Möglichkeit... werds testen Schlechte Qualität!
?? hast du als 3. parameter mal 100 eingesetzt ... kompression steht default-mässig auf 80, ist nicht so toll
__________________
-
Mit Zitat antworten
  #12 (permalink)  
Alt 15-04-2004, 16:30
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

ARG

Dafür hab ich jetzt wieder die Farbverluste...

Ich stell hier mal das Script rein:

PHP-Code:
<?php
header 
("Content-type: image/JPEG");

// Text
// $cattitle = "Small Talk";

$ctfilename str_replace("ä","ae",$cattitle);
$ctfilename str_replace("ü","ue",$ctfilename);
$ctfilename str_replace("ö","oe",$ctfilename);
$ctfilename str_replace("ß","ss",$ctfilename);
$ctfilename str_replace("ú","u",$ctfilename);
$ctfilename str_replace("ù","u",$ctfilename);
$ctfilename str_replace("á","a",$ctfilename);
$ctfilename str_replace("à","a",$ctfilename);
$ctfilename str_replace("é","e",$ctfilename);
$ctfilename str_replace("è","e",$ctfilename);
$ctfilename str_replace("ó","o",$ctfilename);
$ctfilename str_replace("ò","o",$ctfilename);
$ctfilename str_replace("í","i",$ctfilename);
$ctfilename str_replace("ì","i",$ctfilename);
$ctfilename str_replace("@","a",$ctfilename);
$ctfilename str_replace("€","E",$ctfilename);
$ctfilename str_replace("ç","c",$ctfilename);
$ctfilename str_replace("©","c",$ctfilename);
$ctfilename str_replace("®","r",$ctfilename);
$ctfilename str_replace("£","L",$ctfilename);
$ctfilename str_replace(".","",$ctfilename);
$ctfilename str_replace(":","-",$ctfilename);
$ctfilename str_replace(" ","_",$ctfilename);
$ctfilename strtolower($ctfilename);

$cturl 'images/cat-titles/'.$ctfilename.'.jpg';

$im = @ImageCreateFromJPEG($cturl);

IF(!
$im) {

    
// Font Datei / Größe
    
$fontfile "/www/htdocs/fonvdrei/fonts/grinched.ttf";
    
$fontsize "24";
    
    
$bgfile "images/cat-titles/cat-title-bg.jpg";
    
    
// Überprüfen der Textlänge/Breite
    
$bbox ImageTTFBBox($fontsize0$fontfile$cattitle);
    
    
$width $bbox[2]+(0-$bbox[6]);
    
$height $bbox[3]+(0-$bbox[7]);
    
    
$x 3;
    
$y 35;
    
    
// Bild für Text erstellen
    
$im ImageCreateTrueColor($width+4,40);
    
    
// Hintergrund laden
    
$background ImageCreateFromJPEG($bgfile);
    
    
// Verschmelzen
    
ImageCopy($im,$background,0,0,0,0,$width+4,40);
    
    
    
// Hintergrund und Textfarben einstellen

    
$textcolor1  ImageColorAllocate ($im2551530); // Schriftfarbe
    
$textcolor2  ImageColorAllocate ($im66116182); // Konturfarbe
    
    // Kontur
    
ImageTTFText($im$fontsize0$x-2$y+2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x-1$y+2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x$y+2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+1$y+2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+2$y+2$textcolor2$fontfile$cattitle);
    
    
ImageTTFText($im$fontsize0$x-2$y+1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x-1$y+1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x$y+1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+1$y+1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+2$y+1$textcolor2$fontfile$cattitle);
    
    
ImageTTFText($im$fontsize0$x-2$y$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x-1$y$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x$y$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+1$y$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+2$y$textcolor2$fontfile$cattitle);
    
    
ImageTTFText($im$fontsize0$x-2$y-1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x-1$y-1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x$y-1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+1$y-1$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+2$y-1$textcolor2$fontfile$cattitle);
    
    
ImageTTFText($im$fontsize0$x-2$y-2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x-1$y-2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x$y-2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+1$y-2$textcolor2$fontfile$cattitle);
    
ImageTTFText($im$fontsize0$x+2$y-2$textcolor2$fontfile$cattitle);
    
    
// Schriftzug
    
ImageTTFText($im$fontsize0$x$y$textcolor1$fontfile$cattitle);
    
    
// Speichern
    
ImageJPEG($im$cturl100);
    
}

// Ausgabe

ImageJPEG($im''100);
?>
__________________
Mit Zitat antworten
  #13 (permalink)  
Alt 15-04-2004, 16:43
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dein server oder deine gd sind besoffen ... ich kann keinen grund
erkennen, warum du farbfehler haben solltest ...

btw: str_replace() kennt auch arrays ... und die kontur würd' ich mit for-
schleifen lösen ... und wofür schreibst du es auf die platte, wenn du es doch danach wieder ausgibst ??
__________________
-
Mit Zitat antworten
  #14 (permalink)  
Alt 15-04-2004, 16:54
Guido
 Member
Links : Onlinestatus : Guido ist offline
Registriert seit: Jan 2001
Beiträge: 324
Guido ist zur Zeit noch ein unbeschriebenes Blatt
Guido eine Nachricht über ICQ schicken Guido eine Nachricht über AIM schicken
Standard

In der GD-Lib ab 2.0.1 probiere mal imagecreatetruecolor
Mit Zitat antworten
  #15 (permalink)  
Alt 16-04-2004, 00:00
harakiri
 Member
Links : Onlinestatus : harakiri ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 261
harakiri ist zur Zeit noch ein unbeschriebenes Blatt
harakiri eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Wurzel
dein server oder deine gd sind besoffen ... ich kann keinen grund
erkennen, warum du farbfehler haben solltest ...


Zitat:
Original geschrieben von Wurzel
btw: *1* str_replace() kennt auch arrays ... und die kontur würd' ich mit for-
schleifen lösen ... *2* und wofür schreibst du es auf die platte, wenn du es doch danach wieder ausgibst ??
1: I Know Der Ersetzungsalgorhythmus ist auch uralt und nur schnell aus nem alten Script von mir kopiert...

2: Ganz einfach: Wenn das Bild schonmal erstellt wurde, dann kommt er gar nicht in die "Erstellen+Speichern" Schleife rein, sondern ruft dieses Bild nur auf... spart im späteren Einsatz Zeit/CPU-Last uvm .

@Guido: Thread durchgelesen? Oder wenigstens meinen 1. Post ??

Gruß,
Christian
__________________
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

Schwere Sicherheitslücke in PHP 5.3.9
Schwere Sicherheitslücke in PHP 5.3.9Die Sicherheitslücke erlaubt das Ausführen von PHP-Code über das Netzwerk. Suhosin bringt Abhilfe öffnet jedoch alte Probleme

02.02.2012 | Berni

Firefox 10 enthält neue Entwicklerwerkzeuge
Firefox 10 enthält neue EntwicklerwerkzeugeFirefox steht in der Version 10 zum Download bereit. Gerade Entwickeler dürften sich über die neuen Entwicklungswerkzeuge freuen.

31.01.2012 | phpler

 

Aktuelle PHP Scripte

Gästebuchservice Script ansehen Gästebuchservice Script

Eröffnen Sie ihren eigenen Gäsebuchservice und bieten Sie ihren Besuchern ein kostenloses Gästebuch an. Verdienen Sie an den Integrierten AD System. Viele Benutzerdeffinierte Einstellungen ermöglichen ihren Kunden eine gute Integration an das Layout ihrer

10.02.2012 maternet | Kategorie: PHP/ Gaestebuch
LizenzMaker

Mit dem PDF-LicenseMaker erstellen Sie völlig unkompliziert und innerhalb kürzester Zeit eine Lizenz für Ihre Software-Artikel im PDF-Format. Sie verwalten die Daten Ihrer Software, Lizenztexte, PDF-Dokumente und Lizenzgrafiken bequem über ein Webinter

10.02.2012 maternet | Kategorie: PHP/ PDF
Top 100 Counterservice mit Verzeichnis ansehen Top 100 Counterservice mit Verzeichnis

Sie erhalten in diesem Script ein Top 100 Verzeichnis mit einem integrierten Counterservice. Wenn Sie sich Registrieren erhalten Sie einen kostenlosen Counter für ihre Website. Wenn ihre Besucher auf den Counter klicken, erhalten Sie automatisch eine h

09.02.2012 maternet | Kategorie: WEBMASTER/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:24 Uhr.