Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: OS X Entwicklerforum. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

  • »Thallius« ist der Autor dieses Themas

Beiträge: 6 397

Wohnort: Herdecke

Beruf: Selbständig

Hobbys: Gleitschirmfliegen, RC-Helikopter, Faustball

  • Private Nachricht senden

1

Freitag, 4. November 2011, 14:46

via PHP Thumbnail eines Images bekommen ?

Hi,

ich muss in meiner App Bilder downloaden die auf einem server als Files vorliegen. Also z.B

http://www.url.com/bilder/1.jpg

Leider sind diese Bilder teilweise riesig und deshalb würde ich sie gerne serverseitig vorher verkleinern bevor ich sie verschicke. Sprich ich rufe von meiner app aus dann eine Seite

http://www.url.com/getimage?imagename=1.jpg

auf. Dieses script soll dann das Image laden, skalieren und mir schicken. Irgendwie habe ich da aber gerade einen Knoten im Kopf. Ich kann das Bild in dem php script laden und skalieren. Soweit so gut. Muss ich es nun erst wieder speichern und dann via redirect an meine App senden oder geht das auch eleganter indem ich direkt das skalierte Bild schicke ohne es zu speichern ?

Das Bild wird nur einmal geladen und dann in meiner App lokal gecached. Ein Abspeichern des Thumbnails ist also nicht sinnvoll da es sonst nur den Server unnötig füllt.

Gruß

Claus
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)

Beiträge: 144

Wohnort: irgendwo im Wienerwald

Beruf: Softwareentwickler

  • Private Nachricht senden

2

Freitag, 4. November 2011, 14:58

Hallo Claus,

sofern Dir die Exif-Daten egal sind, kannst Du die oft beim PHP mitgelieferte GD lib nehmen - http://php.net/manual/en/function.imagecopyresized.php

Viele Grüße,
Thomas

  • »Thallius« ist der Autor dieses Themas

Beiträge: 6 397

Wohnort: Herdecke

Beruf: Selbständig

Hobbys: Gleitschirmfliegen, RC-Helikopter, Faustball

  • Private Nachricht senden

3

Freitag, 4. November 2011, 15:10

Danke

aber wie ich skalieren kann ist mir schon klar. Nur ist mir gerade nicht klar wie ich das skalierte Bild dann zu meiner App bekomme. Sprich das PHP Script soll sich für den Client ja so verhalten als würde es ein Image zurückliefen genau als wenn der Client direkt eine ImageURL angesprochen hätte.

Gruß

Claus
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)

4

Freitag, 4. November 2011, 15:19

Daten basteln, Header auf Dateiformat setzen, Daten ausgeben.
Der Empfänger interpretiert das Ganze dann einfach als Bild und gut ist.
Viel mehr musst du da nicht tun.
Gibt es auch etliche Tutorials zu. Auf die Schnelle gefunden:
http://phplearn.mali.ch/tutorial/31/show/

Sinngemäß:

PHP-Quelltext

1
2
3
4
$img imagecreatefromjpeg($unInjectedImageName.'.jpg');  
// Anpassungen am Image
header("Content-type: image/jpeg");
ImageJpeg($img""60);


As easy as winking. ^^
Hilfreich? Dann freue ich mich über eine kleine Spende. :) Flattr this
----
«Applejack» "Don't you use your fancy mathematics to muddle the issue!"
----

Beiträge: 144

Wohnort: irgendwo im Wienerwald

Beruf: Softwareentwickler

  • Private Nachricht senden

5

Freitag, 4. November 2011, 15:21

Ah sorry, hatte Dich falsch verstanden - dazu kannst Du mod_rewrite verwenden. Das "Mapping" der URL von http://www.url.com/bilder/1.jpg auf http://www.url.com/getimage?imagename=1.jpg erfolgt dann über einen Eintrag in der .htaccess

Quellcode

1
2
RewriteEngine on  
RewriteRule ^bilder/([^./]+)$ 	/getimage.php?imagename=$1 [NC]

Viele Grüße,
Thomas

6

Freitag, 4. November 2011, 15:24

Ah sorry, hatte Dich falsch verstanden - dazu kannst Du mod_rewrite verwenden. Das "Mapping" der URL von http://www.url.com/bilder/1.jpg auf http://www.url.com/getimage?imagename=1.jpg erfolgt dann über einen Eintrag in der .htaccess

Quellcode

1
2
RewriteEngine on  
RewriteRule ^bilder/([^./]+)$ 	/getimage.php?imagename=$1 [NC]

Viele Grüße,
Thomas

Du kannst auch einfach deiner PHP.ini erklären, dass sie im Verzeichnis für 'thumbs' einfach alle .jpg Dateien als .php parst.
Hilfreich? Dann freue ich mich über eine kleine Spende. :) Flattr this
----
«Applejack» "Don't you use your fancy mathematics to muddle the issue!"
----

  • »Thallius« ist der Autor dieses Themas

Beiträge: 6 397

Wohnort: Herdecke

Beruf: Selbständig

Hobbys: Gleitschirmfliegen, RC-Helikopter, Faustball

  • Private Nachricht senden

7

Freitag, 4. November 2011, 16:13

Ich habe es jetzt so gelöst

Quellcode

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
<?PHP

    header('Content-Type: image/jpeg');

    $imagename= $_GET['imagename'];
    $device   = $_GET['device'];

    $width=480;
    $height=320;
    
    if(!isset($device) || strcmp($device,"iPhone")!=0)
    {
        $width=1024;
        $height=768;
    }
            
    if(!isset($imagename) || strlen($imagename)==0)
    {
        $source = imagecreatefromgif("nopic.gif");
        imagejpeg($source);
        die();
    }

    list($oldwidth, $oldheight) = getimagesize($imagename);
    
    // landscape
    if($oldwidth>=$oldheight)
        $height=($width*$oldheight)/$oldwidth;
    else
        $width=($height*$oldwidth)/$oldheight;
    
    $ext = pathinfo($imagename, PATHINFO_EXTENSION);
    if(strcasecmp($ext,"jpg")==0)
    $source = imagecreatefromjpeg($imagename);
    if(strcasecmp($ext,"gif")==0)
    $source = imagecreatefromgif($imagename);
    if(strcasecmp($ext,"png")==0)
    $source = imagecreatefrompng($imagename);

    $thumb = imagecreatetruecolor($width, $height);
    imagecopyresized($thumb, $source, 0, 0, 0, 0, $width, $height, $oldwidth, $oldheight);

    imagejpeg($thumb);
?>


Klappt super

Gruß

Claus
Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)

Social Bookmarks