WinFuture-Forum.de: Bild Drehen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Bild Drehen


#1 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 08. August 2008 - 11:40

Hallo liebe Leute,
in meiner Bildergalerie wird ein Bild in der Vorschau leicht schräg angezeigt. (Layout bedingt) Da ich nicht jedes Bild doppelt (bzw in meinem Fall vierfach) speichern möchte, würde ich das Bild gerne irgendwie per Code drehen.

Meine bisherige Lösung:

function bilddrehen($file,$grad)
{
$source = imagecreatefromjpeg($file);
$rotate = imagerotate($source,$grad,0);
imagecolortransparent($rotate,0);
imagepng($rotate,"temp.png");
imagedestroy($source);
}


Diese Funktioniert auch, allerdings ist sie unerträglich langsam und funktioniert nur mit kleineren Bildern.
Ich habe mich bereits tot gesucht, als einzige Alternative wurde ImageMagick gennant. Wenn ich das richtig verstanden habe soll ich ein externes Programm auf dem Webserver installieren, dass dann das Bild für mich dreht.
Jedoch habe ich nicht die Möglichkeit ein Programm auf dem Server zu installieren.

Gibt es wirklich keine Möglichkeit ein Bild um eine feste Gradzahl zu drehen? Ich bin für alle Möglichkeiten offen, die kein zusätzliches Programm benötigen.

Vielen Dank im vorraus,

mfg
Sebastian
0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 08. August 2008 - 12:54

Warum schreibst du das Bild extra in eine Datei? Mach es doch einfach so, dass das PHP-Skript im img-Tag aufgerufen wird und das Skript dann direkt das gedrehte Bild ausgibt. Dann hast du keine Verzögerung während der Seitengenerierung, sondern das Bild wird einfach geladen, sobald es fertig ist.

img_rotate.php
<?php

$bildpfad = $_GET['src'];
$grad = $_GET['degree'];

header('Content-type: image/png'); //Header für PNG

$source = imagecreatefromjpeg($bildpfad);
$rotate = imagerotate($source,$grad,-1);

imagealphablending($rotate, true); 
imagesavealpha($rotate, true);

imagepng($rotate); //Bild ausgeben

?>


und dann die img-Tags:
<img src="img_rotate.php?src=bild.jpg&degree=90" alt="Gedrehtes Bild" />


Gruß,
Stefan
0

#3 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 08. August 2008 - 12:59

okay stimmt, funktioniert natürlich auch.. Ändert allerdings an dem Problem nichts. Die GDlib Funktionen zur Bildmanipulation sind ziemlich rechenaufwändig.
Und genau das verursacht glaube ich die Wartezeit. Möglich, dass deine Methode effizienter ist - dummerweise nur ein Tropfen auf den heißen Stein in meinem Fall..
0

#4 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 762
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 08. August 2008 - 13:10

Wie wäre es damit die Bilder zu Cachen?
0

#5 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 08. August 2008 - 13:13

Wenn du wirklich Ladezeit sparen willst, dann musst du die Bilder gleich gedreht auf einen extra Image-Server stellen, der am besten mit lighttpd läuft. Aber das fällt ja bei dir weg. Natürlich dauern diese Funktionen eine gewisse Zeit, da Bildbearbeitung sehr rechenintensiv ist.

Gruß,
Stefan
0

#6 Mitglied ist offline   web189 

  • Gruppe: aktive Mitglieder
  • Beiträge: 218
  • Beigetreten: 25. September 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Niex

geschrieben 08. August 2008 - 16:34

Naja, mit der Zeit könnte ich mich abfinden.. Nur wie gesagt gehen "richtige" Bilder gar nicht. Memory_limit ist wohl zu niedrig gesetzt.
Google meinte, dass die Funktionen der gdlib zur Bildbearbeitung sehr uneffizient sind. Ich hatte gehofft man könnte es anders lösen...
Eine zusätzliche Bibliothek, eine Java Script lösung, oder ein CSS schnipsel. Keine Ahnung ob es sowas gibt.
Cachen verringert zwar die Ladezeit, allerdings sind dann immernoch die Grenzen meines Webhosters im Spiel. memory_limit ist bei 50M, was meiner Meinung schon ein Recht großzügiger Wert ist.

Wie gesagt würde ich mich über eine Lösung außerhalb von PHP freuen. Kenne mich mit JS nicht wirklich aus, weiß also nicht, ob so etwas machbar ist.


Danke für die bisherigen Ansätze,


mfg
Sebastian
0

#7 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 652
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 09. August 2008 - 12:47

Beitrag anzeigenZitat ([Elite-|-Killer]: 08.08.2008, 14:10)

Wie wäre es damit die Bilder zu Cachen?



da kam doch schon die passende Antwort...


und wieso liegen die Bilder nicht gleich richtig aufm Server? "Layoutbedingt" bringt da als Begründung auch nix...
Raise your glass if you are wrong
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0