Portal > Foren > PHP > PHP-Programmierung > Mimetype einer Image Resource
Antwort
 
Themen-Optionen
Alt 05.12.2007, 11:47 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard Mimetype einer Image Resource

Ich habe hier eine Klasse die verschiedene Bildmanipulationen macht. Um das lesen und schreiben von Bildern zu abstrahieren hab ich ne allgemeine Funktion gemacht. Eine Datei einzulesen und den jeweiligen image Befehl zu machen (imagecreatefrom[png|jpeg|gif]) ist kein Problem.

Aber hat jemand ne Idee wie ich aus einer Image Resource den passenden imagebefehl mache?

Es muss doch möglich sein aus einer ImageResource den Typ zu bekommen und dann die jeweilige ImageFunktion zu laden. Ich würde nämlich den Bildtyp zurückschreiben von dem auch das ursprüngliche ist.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 13:01 Nach oben    #2
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

So ganz habe ich nicht verstanden, was du meinst.
Wieso überprüfst du nicht einfach die Endung der entsprechenden Bilddatei?

Siehe pathinfo.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 13:23 Nach oben    #3
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Zitat:
Eine Datei einzulesen und den jeweiligen image Befehl zu machen (imagecreatefrom[png|jpeg|gif]) ist kein Problem.
Dann einfach eine Klassenvariable setzen, die sagt, was es ist (PNG, JPG,GIF...) und du kannst dann frei entscheiden welche Imagebefehle du dann aufrufst...
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 13:51 Nach oben    #4
Neuer Benutzer
 
Registriert seit: 27.11.2007
Beiträge: 5
Standard

getimagesize() kann dir ja im Vorfeld helfen.
Wenn du die Datei aber bereits eingelesen hast, sehe ich kein Problem dem Script zu sagen, es soll sich "merken", was für eine Datei es gelesen hat ^^
Papst ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 16:59 Nach oben    #5
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Die Funktionen der Klasse möchte ich vielleicht statisch und unabhängig verwenden da passt das mit den Instanzvariablen nicht so ganz.

Angenommen ich lese ein Bild ein und mach dann imagecreatefrompng()
Dann kommen noch ein paar Bildfunktionen und dann möchte ich diese Image Resource mit imagepng wohin schreiben.

Lässt sich anhand der Image Resource nicht auslesen aus welchem Bildtyp die erstellt wurde um dann den dementsprechenden image... Befehl anzuwenden?

Mit imagesx() krieg ich ja auch die Breite der Image Resource. Gibts da nicht wo mir ausgibt "Ich war mal ein PNG"?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 17:16 Nach oben    #6
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Zitat:
Die Funktionen der Klasse möchte ich vielleicht statisch und unabhängig verwenden da passt das mit den Instanzvariablen nicht so ganz.
Ähm ok, aber wo ist das Problem?
In dem Moment wo du imagecreatefrompng() aufrufst, weißt du doch, dass es ein png ist...
Sinngemäßes Vorgehen:
1. Dateiendung auslesen und speichern
2. createimagefrom....();
3. Imagefunktionen je nach Dateiendung anwenden
4. Image in Datei speichern mit Dateiendung von 1

Dabei kannst du 2. und 3. als statische Funktionen deiner Klasse nutzen und alles andere im Kontext des Aufrufs speichern und erledigen.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 20:25 Nach oben    #7
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Die Funktionen der Klasse möchte ich vielleicht statisch und unabhängig verwenden da passt das mit den Instanzvariablen nicht so ganz.

Angenommen ich lese ein Bild ein und mach dann imagecreatefrompng()
Dann kommen noch ein paar Bildfunktionen und dann möchte ich diese Image Resource mit imagepng wohin schreiben.

Lässt sich anhand der Image Resource nicht auslesen aus welchem Bildtyp die erstellt wurde um dann den dementsprechenden image... Befehl anzuwenden?

Mit imagesx() krieg ich ja auch die Breite der Image Resource. Gibts da nicht wo mir ausgibt "Ich war mal ein PNG"?
Die Breite ist ja auch eine Eigenschaft des Bildes. Das Format, in dem es dann letztlich gespeichert wurde aber nicht. Macht doch auch keinen Sinn, oder? Du packst dein Geschenk aus dem Geschenkpapier aus, änderst den Namen und packst es so ein, wie du es haben willst. Wenn du es unbedingt wieder ins gleiche Papier wickeln willst, dann musst du eben dir eben selbst merken, welches Papier zu dem Päckchen gehört hat.

Möglich wäre eine Image-Klasse, der du z.B. den Bild-Pfad übergibst. Die baut dann je nach Typ (getimagesize()) eine Klasse ImagePng, ImageJpeg oder ImageGif, die alle von einer gemeinsamen Basis-Klasse abgeleitet sind (vielleicht die Image-Klasse selbst???). Nach außen ist nicht sichtbar, welchen Typ das Bild hat, aber intern ist es ja in der konkreten Klasse hinter dem Proxy gespeichert.


Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 20:41 Nach oben    #8
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.203
Standard

was die klasse angeht.
ich hatte da mal angefangen:
http://www.developers-guide.net/foru...e-qualitaet-ok
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 22:03 Nach oben    #9
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Zitat:
Angenommen ich lese ein Bild ein und mach dann imagecreatefrompng()
Jo zb.B. $im = ImageCreateFromPNG('blabla.png');
Dann ist $im = Image Resource, der Inhalt ist dann ein Rohformat, weder JPG, GIF oder PNG zugeordnet. Das wird erst beim speichern gemacht. Sprich der Bildtyp wird erst bei ImagePNG, ImageGIF oder ImageJPEG zugeordnet - vorher nicht.
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 22:14 Nach oben    #10
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Ok, wenn die Image Resource ein eigenes Format hat (GD?) dann kann ich das ursprüngliche Format ja nicht mehr bekommen. Ich hab es jetzt so gelöst das ich eine imageCreate Funktion habe die im Parameter den Typ bekommt, also png, jpg und noch ein $options array.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 22:35 Nach oben    #11
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

So wirklich verstehe ich dich gar nicht.
Wenn du ein Bild mit ImageCreateFromPNG() öffnest, dann ist es logisch ein PNG gewesen Und wenn du diese mit ImageGIF() speicherst, dann ist es eben ein GIF-Format. Nach was suchst du eigentlich jetzt ?

Wenn du ein neues Bild mit ImageCreate() erstellst, ist es wurst was in der Resource steht, denn letztlich bestimmt du selber das Format beim speichern.
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.12.2007, 22:43 Nach oben    #12
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Zitat:
Wenn du ein Bild mit ImageCreateFromPNG() öffnest, dann ist es logisch ein PNG gewesen Und wenn du diese mit ImageGIF() speicherst, dann ist es eben ein GIF-Format. Nach was suchst du eigentlich jetzt ?
Er meinte im ersten Post:
Zitat:
Ich würde nämlich den Bildtyp zurückschreiben von dem auch das ursprüngliche ist.
Deswegen hab ich ja auch nicht so ganz verstanden, wo das Problem ist. Er meinte, dass es kein Problem sei, createimagefrom[jpg|gif|png]() auszuwählen... auf die gleiche Art müsste er eigentlich nur sein create[jpg|gif|png]() auswählen...
Ich glaub ex³ denkt im Moment um drei Ecken anstatt geradeaus zu schauen
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.12.2007, 09:08 Nach oben    #13
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Dachte mir das eigentlich so

Code:
public function rotateImage($source, $dest) [
    $sourceImg = $this->_createImageFromFile($source);

    // Bild drehen

    $res = $this->_createImage($sourceImg, $dest);
}
Die beiden Funktionen createImageFromFile und createImage sollten eigentlich anhand der Quelle selbst die passenden Image Befehle verwenden. Dabei soll dann ein neues Bild im Format des Quellbildes gemacht werden. Wiegesagt mach ich das eben grade so das ich die extension des Quellbildes auslese und dem createImage übergebe.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.12.2007, 10:12 Nach oben    #14
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.471
Standard

Ich sehe immer noch nicht genau, wo eigentlich das Problem ist.
Zitat:
Wiegesagt mach ich das eben grade so das ich die extension des Quellbildes auslese und dem createImage übergebe.
Das klappt doch auch gut so, oder nicht?

Du kannst doch in der Methode _createImageFromFile() eine Membervariable setzen, die den Bildtyp speichert und auf diesen greifst du dann in der _createImage()-Methode zu.

Irgendwie hab ich nicht verstanden, was du machen willst glaub ich.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.12.2007, 10:18 Nach oben    #15
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Dann machs doch so, wie ich es beschrieben gab:

PHP-Code:

class Image
{
    protected 
$Image;
    protected 
$iType;

    public function 
__construct($sFilePath)
    {
        
$this->iType // Bildtyp
        // je nach Bildtyp:
        
$this->Image = new ImagePng($sFilePath);
    }

    public function 
save($iType null)
    {
        if (
is_null($iType))
            
$iType $this->iType;

        
$Image->save($iType);
    }

    public function 
__call($sMethod$aArgs)
    {
        
call_user_func_array(array($this->Image$sMethos), $aArgs);
    }
}

abstract class 
ImageBase
{
    protected 
$Image;

    final public function 
__construct($sFilePath)
    {
        
$this->Image $this->getImageFromFile($sFilePath);
    }

    final public function 
load(Image $Image)
    {
        
$this->Image $Image;
    }

    public function 
rotate($iAngle)
    {
        
// Bild drehen
    
}
}

class 
ImagePng extends ImageBase
{
    protected function 
getImageFromFile($sFilePath)
    {
         return 
imageCreateFromPng($sFilePath);
    }

    public function 
save($sFilePath)
    {
        
// …
    
}

…irgendwie so halt.

Basti

Geändert von Basti (06.12.2007 um 10:20 Uhr).
Basti 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 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 aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Drag & drop - images risa Desktop-Applikationen und Grafik 4 28.05.2006 15:48
MimeType herausfinden pago Allgemeine Java-Programmierung 3 08.03.2006 12:13
MouseListener auf Image Tristan Desktop-Applikationen und Grafik 3 07.09.2005 13:29
Image geklickt? Gottzilla Desktop-Applikationen und Grafik 6 31.05.2005 21:23
Resource in Jars ruuk76 Allgemeine Java-Programmierung 6 24.05.2005 12:59


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


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

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