"sharpen" & html in der Laufzeit....

mille

Erfahrenes Mitglied
...eines PHP Skriptes erstellen und verändern.
Aber nun erstma zum ersten Punkt ;).

Die Funktion "sharpen"/"schärfen" aus Phtoshop dürfte jedem bekannt sein der nur Ansatzweise mit Bildbearbeitung was am Hut hat... ICh hab mir jetzt ein Skript gebastelt welches mir Thumbnails erstellt, will dies aber noch erweitern, nur da ich noch nie mit der GD Library gearbeitet habe, musst ich mich ja erstma reinfizzen :).
Nun, hab ihc meine Thumbnails mit Originalfarben erstellt (bin ich stolz drauf *hehe), aber bei manchen Objekten fällt das auf, das das verkleinert wurde, das ist zwar bei einem Thumbnail egal, aber ich will das perfekt haben, also meine frage gibt es eine PHP Funktion die das noch einmal schärft? oder antialiased?
Es gibt zwar eine Funktion, aber darüber steht bei php.net nichts... Also Sind eure Ideen gefragt, wäre dankbar.

Das zweite ist, ich will mit dem Skript so locker mal 200 Thumbnails in einer Schleife erstellen, da dies aber ziemlcih lange daueren wird, denk ich einfach mal, möchte ich einen Statusbalken per HTML ausgeben, und wenn es nur ein einfacher Roter Balken ist bei dem ich die width="" eingabe vergrößere... Gibt es eine Möglichkeit dies WÄREND der Laufzeit des PHP Skriptes zu tun, also wärend ich die Thumbs erstelle? das ich alle 0,5 Sekunen ein Request an den Server oder so sende?

Das hätte ich gerne noch beantwortet :)

Das wars erstma, ich geh auch ins Bett, bin ziemlich müde.
Bis morgen dann, könnt ich auch gleich wieda was von mir lessen *Fg

schöne Grüße, millZ (und Danke schon mal)
 
Also ich kann dir jetzt grade nur etwas zu dem Statusbalken sagen, einer der Sich verändert ist mit PHP nicht möglich, da die Daten alle verarbeitet werden und erst dann an den Clienten gehen.
Du könntest es mit JavaScript versuchen. Damit ist es durchaus möglich einzelne Objekte(Bilder) zu aktualisieren und zu verändern.

Doch wie du die Schnittstelle zwischen PHP und JavaScript in diesem Fall mache sollst, weiss ich auch noch nicht ;)

Vieleicht errechnest du eine Durchschnitsszeit, wie lange er für ein Thumbnail brauch, multiplizierst das mit der Anzahl der Thumbnails und Schickst das an das JavaScipt-Script ;) und berechnest dort die Länge des Balken..
 
das ist leider auch immer Server abhängig... einzige Möglichkeit die mir einfällt... nach allen 5 Bildern, kurz die html aktualisieren, in dem ich dne Statusbalken verlängere.... ;)
 
Nachschärfen ist nicht möglich (soweit ich weiss zumindest nicht), aber copyimageresampled() an Stelle von copyimageresized() liefert meiner Meinung nach schon recht gute Ergebnisse.

Statusbalken in PHP: Das elende alte Problem. Es ist nicht effektiv zu lösen. Gibt zwar Script die sowas über ein vorzeitiges senden der Ergebnisse machen, aber das ist im Prinzip ein Workaround, den ich nicht gutheissen kann :rolleyes:
PHP ist nunmal eine serverseitige Scriptsprache, die VOR der Ausgabe geparsed wird. Dabei wird HTML Code erstellt, der NACH dem parsen an den Browser übergeben wird. Es ist also meiner Meinung nach schon rein von der Logik her nicht möglich, ein Element (z.B. ein Bild) immer wieder zu verändern (z.B. in der Breite).
 
Deshalb meine Idee das "wärend der Laufzeit" in ein Unterbrechen der Laufzeit umzuwandeln, sprich nach immer 5 oder 10 bildern, die HTML aktualisieren, das ist auch mit deiner (Tim's) Überlegung der Logik her möglich...

das mit imagecopyresampled probier ich mal!....

millZ
 
Ein Lösungsansatz auf den ich vorhin gekommen bin als
ich die Frage gelesen habe. Die Grundidee ist ganz einfach :

Wenn ich ein Bild einfach bei jedem Schritt aktualisier und abspeichere,
dann kann ich es über JavaScript und die SetTimeOut Funktion wunderbar
neu lesen. Ich bin dann auf ein Problem gestossen als der HTML Block
erst ausgegeben wurde nachdem der PHP Block abgehandelt war. Das
ganze war aber durch einen kleinen Trick bei dem ich den HTML Block
über "ob_start" erst gepuffert und dann direkt über "ob_flush" ausgegeben habe.

Dort wo meine ThumbnailFunktion steht ist Platz für eure eigene oder ihr
kopiert euch halt meine Skriptteile wie ihr sie haben wollt. Der Script ist
experimentell und daher sind Fehler normal. Wenn ihr Ideen, Verbesserungs-
vorschläge habt, meldet euch.

Kleine Namensnennung wäre cool.

Mentor, Jona

PHP:
<?php
 //Der Name des Fortschrittsbalkens
 $img_bar = "progress.jpg";

 //Der Pfad in dem die Bilder liegen
 $img_dir = "retro/bilder/daily/thumb/";

 //Der Pfad in dem die Bilder gespeichert werden
 $img_dst = "test/0";

 //Wenn die Datei bereits existiert lösche Sie.
 //Notwendig um den Balken in die 0Stellung zu 
 //bringen.
 if(file_exists($img_bar)) unlink($img_bar); 

 //Starte Ausgabepuffer
 //Dieser Schritt ist notwendig da sonst der HTML Teil,
 //bzw. das Bild erst nach Durchführung des kompletten 
 //Scripts erscheinen, was natürlich herzlich wenig Sinn macht.
 ob_start(); 
?>

<html>
<head>
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<!--JavaScript der das Bild im Abstand von 500 Millisekunden neu lädt //-->
<script language="JavaScript" type="text/javascript">
 <!--
  function progress()
  {
   rfsh = new Date() ; rfsh = "?"+rfsh.getTime()
   document.images["progress"].src = "progress.jpg"+rfsh
   setTimeout("progress()", 500)
  }
 //-->
</script>
</head>
<body onLoad="progress()">
Progressbar<br>
<img src="<?php echo $img_bar; ?>" id="progress" name="progress">
</body>
</html>

<?php
 //Gibt das gepufferte HTML aus
 ob_flush();

 $handle = opendir($img_dir);

 while(($file = readdir($handle)) !== false)
 {
  if($file=="." || $file=="..") continue;  

  $path = $img_dir.$file;

  #Thumbnailerstellung
  $img = imagecreatefromjpeg($path);
  $dst = imagecreate(100,100);

  $dst_dir = $img_dst.$i.".jpg";

  imagecopyresized($dst,$img,0,0,0,0,100,100,100,100);
  imagejpeg($dst,$dst_dir);

  imagedestroy($img);
  imagedestroy($dst);

  #Progress Bar Erstellung
  $i++;
  $c = $i*10;

  $bar   = imagecreate($c,20);
  $red   = imagecolorallocate($bar,255,0,0);
 
  imagefill($bar,0,0,$red); 
  imagejpeg($bar,$img_bar);

  imagedestroy($bar);
 }
?>
 
Ich werd mich jetzt ersteinmal duschen gehen, etwas essen und dann probier ich das mal aus, In wie fern ich das Ändern würde, und in wiefern das Skript werde ich euch mitteilen... Vorher muss ich mich aber mal mit den ob_funktionen befassen, damit ichw eiss wie und was die bewirken, also genau...!

Name könnte lauten: progressor ;)

ps: mein Thumbnailskript ist viel schöner *fg

millZ
 
ich hab das Skript jetzt mal ein wenig getestet.

Bei mir im IE funktioniert das Skript nicht, weil mein IE wohl immer wartet bis alles geladen ist...
Im Mozilla (Firebird) funktioniert das Aufbauen des Bars... allerings nur einmal, danach muss entweder ide Datei vom Server gelöscht werden oder ein Temp internet Files löschen vorgenommen werden...

Und im Firebird ist immer sichtbar wie der noch auf Daten wartet.... also sowas wie ob_end_flush(); oder so müsste noch rein.

Da richte ich mich mal an unseren Mentor ;)

skript: http://www.da-mille.de/auslagerung-schallwerk/verkleinern/refresh.php

jetzt ohne Thumbnailerstellung, aber mit Zählschleifen, so das das verzögern sichtbar gemacht ist....

Wie ist denn der Befehl das das Laden verhindert wird und warum wird das in meinem IE nicht so angezeigt.... ?

Ich richte mich jetzt speziell an Nils Adomeit =)

millZ

PS: nun klappt das mit dem immerwieder aktualiseiren (im Mozilla)...! nun geh ich aber auch schlafen
 
Zuletzt bearbeitet:
Cache ausschalten ist das Geheimniss ..

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ." GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", FALSE);

In den Anfang der Datei packen .. ausprobieren.

3 Versuche gemacht mit IE 6 und 2 mal ist gut gegangen *seufz*

Jona
 
Zurück