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 08-09-2010, 17:20
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard Bilddemensionen eines als Blob gespeicherten Bildes

Hallo Freunde,

hab Bilder als blobs in der DB liegen (warum das schlecht/gut ist sei mal dahingestellt, ist einfach so, da gibts auch keinen Ausweg) und möchte gerne die Dimensionen dieser Bilder auslesen.

Scheitere aber mit imagesx/y, das ja eigentlich eine img-ressource übernehmen würde? Also um die Frage zu konkretisieren, wie "caste" ich das MySQL-blob in eine PHP-Image Ressource?

Hab das Gefühl die Lösung müsste wirklich simpel sein, aber ich steh grade wieder mal auf dem Schlauch

Anzeigen klappt natürlich einfach mit

Code:
header('Content-Type: image/'.$result['type']);

echo $result['content'];
Danke!
Mit Zitat antworten
  #2 (permalink)  
Alt 08-09-2010, 17:33
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

getimagesize will eine Datei als Parameter haben - zu „casten“ gibt es da nichts.
Entweder schreibst du das Bild in eine (temporäre) Datei, um die Funktion darauf anwenden zu können;
oder du schaust, ob sich das mit dem Wrapper php://memory ggf. gleich im Speicher machen lässt (wobei das für die Performance ungünstig sein könnte).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 08-09-2010, 17:34
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP: imagecreatefromstring - Manual
Mit Zitat antworten
  #4 (permalink)  
Alt 08-09-2010, 17:36
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

du kannst entweder getimagesize mit einer Data-URL benutzen, wenn auf dem Server fopen-Wrapper aktiviert sind oder das Bild mit imagecreatefromstring laden und dann mit imagesx/imagesy rangehen.

Im Falle der Data-URL sähe das so aus:

Code:
$info = getimagesize("data:image/type;base64," . base64_encode($result["content"]));
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 08-09-2010, 17:41
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Thumbs up

Super Leute danke, haargenau "imagecreatefromstring" hab ich gesucht.

Das Forum hilft mir jedes Mal weiter, manchmal hab ichn schlechtes Gewissen weil ich ganz einfach zu langsam bin irgendwas zu beantworten und irgendwas zurückzugeben

Also nochmal danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 09-09-2010, 14:02
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von ThemBones Beitrag anzeigen
Super Leute danke, haargenau "imagecreatefromstring" hab ich gesucht.
Ganz sicher nicht. Spätestens, wenn die Abmessungen des Bildes dein Memory-Limit sprengen, wirst du wieder angequengelt kommen. Wetten?
Mit Zitat antworten
  #7 (permalink)  
Alt 09-09-2010, 16:00
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Smile

Zitat:
Zitat von fireweasel Beitrag anzeigen
Ganz sicher nicht. Spätestens, wenn die Abmessungen des Bildes dein Memory-Limit sprengen, wirst du wieder angequengelt kommen. Wetten?
GD entpackt das Bild, ich weiss. Dem Problem hab ich bereits an anderer Stelle Sorge getragen, aber danke
Mit Zitat antworten
  #8 (permalink)  
Alt 10-09-2010, 00:15
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von ThemBones Beitrag anzeigen
GD entpackt das Bild, ich weiss. Dem Problem hab ich bereits an anderer Stelle Sorge getragen, aber danke
Mit gigantischem Memory-Limit?
Auch die aktuellste PHP-Version bricht einfach das Script ab, wenn imagecreatefromstring() nicht genügend Platz bietet. Für Fehlerbehandlung ist es dann aber zu spät. Zugegeben, dies ist ein Bug (Feature?) in PHP (nicht in der libgd), aber mir ist bisher kein sicheres Mittel bekannt gewesen, mit dem man vorher feststellen kann, ob die Grafik in den Hauptspeicher passt oder nicht. Du kennst eines. Teilst du dein Wissen mit uns?
Mit Zitat antworten
  #9 (permalink)  
Alt 10-09-2010, 00:35
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Genau deswegen hatte ich noch den Data-URL-Ansatz angesprochen. Der ist wesentlich weniger Speicheraufwändig, zumal man noch prüfen könnte, ob nicht schon die ersten 1000 Bytes ausreichen, um die Größe zu bestimmen. Bei GIF, PNG und JPEG sind die Bildgröße jedenfalls relativ nahe am Dateianfang zu finden.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 11-09-2010, 15:05
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Genau deswegen hatte ich noch den Data-URL-Ansatz angesprochen.
Den Teil mit dem fopen-Wrapper hatte ich verstanden Hoffentlich kann getimagesize() auch damit umgehen. In dem Fall würde ich der Funktion einen Stream-Wrapper unterjubeln, der 'php://temp' benutzt. Der ist nicht durchs Memory-Limit eingeschränkt.

Zitat:
Der ist wesentlich weniger Speicheraufwändig, ...
Den Teil habe ich nicht ganz verstanden. Da die ganze Grafikdatei erst base64-kodiert werden muss, wird der Speicherverbrauch mehr als verdoppelt (raw + base64-kodiert = 233%). Das ist zwar weniger, als das Bild erst mit imagecreate() in den Hauptspeicher zu entpacken, aber auch nicht unbedingt sparsam. Außerdem müssen die Binärdaten erst kodiert und dann wieder dekodiert werden. Einmal hin- und dann wieder zurückzukopieren würde sicher weniger Aufwand machen.

Zitat:
...zumal man noch prüfen könnte, ob nicht schon die ersten 1000 Bytes ausreichen, um die Größe zu bestimmen. Bei GIF, PNG und JPEG sind die Bildgröße jedenfalls relativ nahe am Dateianfang zu finden.
Korinthenkackerei: Das gilt für GIF. Bei JPEG ist das nur für JFIF und EXIF garantiert.
Aber mit "unvollständigen" Dateien müsste getimagesize() zurechtkommen. Schwierigkeiten dürfte es höchstens bei Containerformaten geben, die mehrere Bilder (oder Streams oder wie auch immer das heißt) mit unterschiedlichen Auflösungen speichern können.

Geändert von fireweasel (11-09-2010 um 15:11 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 11-09-2010, 15:08
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist gerade online
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Warum wird die Bildgröße nicht beim Speichern der Bilddaten auch in die Datenbank geschrieben? Das Ganze beim Auslesen zu machen, finde ich persönlich ziemlich behindert. Mal davon abgesehen, dass ich Bilder gar nicht in der Datenbank speichern würde, aber das ist jetzt ein anderes Thema.
Mit Zitat antworten
  #12 (permalink)  
Alt 11-09-2010, 15:12
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Zitat:
Zitat von h3ll Beitrag anzeigen
Das Ganze beim Auslesen zu machen, finde ich persönlich ziemlich behindert.
Im Thread-Titel steht ja auch schon irgendwas davon, dass die Bilder wohl Demenz haben ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #13 (permalink)  
Alt 11-09-2010, 15:22
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Warum wird die Bildgröße nicht beim Speichern der Bilddaten auch in die Datenbank geschrieben?
Das war auch mein erster Gedanke ...
Man könnte ja auch jetzt, wo das Kind in den Brunnen gefallen ist, einfach mal in einem Rutsch die Bild-Meta-Daten nachtragen. Dann müsste man sie nicht bei jeder Abfrage extra aus den Binärdaten popeln.
Mit Zitat antworten
  #14 (permalink)  
Alt 24-11-2010, 14:10
ThemBones
 Registrierter Benutzer
Links : Onlinestatus : ThemBones ist offline
Registriert seit: Nov 2005
Beiträge: 131
ThemBones ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Mal davon abgesehen, dass ich Bilder gar nicht in der Datenbank speichern würde, aber das ist jetzt ein anderes Thema.
Danke für den Hinweis. Werlesen kann (besonders den ersten Post), ist klar im Vorteil

Zitat:
Zitat von fireweasel Beitrag anzeigen
aber mir ist bisher kein sicheres Mittel bekannt gewesen, mit dem man vorher feststellen kann, ob die Grafik in den Hauptspeicher passt oder nicht. Du kennst eines. Teilst du dein Wissen mit uns?
Nein, kenn ich keines. Aber Imagemagick hilft.
Mit Zitat antworten
  #15 (permalink)  
Alt 24-11-2010, 23:39
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von ThemBones Beitrag anzeigen
Nein, kenn ich keines.
Schade. Also muß ich weiter mit "Breite x Höhe x 5" schätzen ...

Zitat:
Zitat von ThemBones Beitrag anzeigen
Aber Imagemagick hilft.
Wenn es zur Verfügung steht.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[PHP5] Brauche Hilfe bei der Ausgabe eines Bildes(Blob) und zeitgleich Text aus einer DB EraserX PHP Developer Forum 1 30-12-2008 17:30
Header eines Bildes Onyxagargaryll PHP Developer Forum 27 12-06-2008 20:00
Größe eines Bildes grimmis PHP Developer Forum 1 30-01-2006 20:42
Farbanteile eines Bildes tAiChi BRAINSTORMING PHP/SQL/HTML/JS/CSS 9 24-12-2005 14:45
Rand eines Bildes mit Link blacktron HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 19-02-2002 19:32

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 21:36 Uhr.