# Pictures resize



## green_phanta (1. März 2007)

Hi

Ich bin noch recht neu in PHP und daher kann ich das nicht alleine Lösen. Deswegen -> Forum .

Also, mein Ziel:
Ein Bild wird auf einen Server geladen. In den Ordner "Bilder".
Sobald man auf die Seire kommt wird ein PHP script ausgeführt der folgendes mit dem Bild machen sollte:
Er erstellt zwei kleiner Bilder von dem Original. Das erste sollt größte Ausdehnung 450 haben und das zweite größte Ausdehnung 75. Größte Ausdehnung deswegen weil es kann ja Hoch und Quer sein, soll aber sein Verhältniss behalten. D.h. nicht verzerren.
Gut ich habe jetzt 3 Bilder im "Bilder" Ordner. Das Original soll er in einen Ordner "Original" verschieben. Das 450-bild soll in den Ordner "images" und das kleine Bild (75) soll in den Ordner "thubnails".

Kann man das mit PHP realisieren oder muss ich da Flash hinzuziehen?

Vielen Dank

greets green


EDIT:
Ach ja es sollte beim Verschieben auch noch undbenannt werden... ist das möglich?


----------



## Gumbo (1. März 2007)

Mit PHP ist das möglich. Alle dafür benötigten Funktionen findest du im Kapitel der Grafikfunktionen.


----------



## green_phanta (1. März 2007)

Ich habe leider ekine Ahnung wie ich so etwas angehe....

Vl könnt ihr mit helfen...


Vielen Dank


----------



## tobee (1. März 2007)

ja das ist möglich. Aber es wäre einfacher wenn du dir einfach ein Beispiel
bei Google suchst. Einfach mal nach "php thumbnails" googlen.

Hier zum Beispiel

Tobee


----------



## green_phanta (1. März 2007)

Ok danke einmal das ist schon sehr hilfreich, aber, da ich noch nicht wirklich viel Ahnung von PHP habe kann ich nichts dazu schreiben vielleicht könnt ihr mir helfen?

Das ist mal mein Script:

```
<?
$PicPathIn="../bilder/";
$PicPathOut="../bilder/out/";

// Orginalbild
$bild="Foto.jpg";

// Bilddaten ermitteln
$size= GetImageSize("$PicPathIn"."$bild");
$breite=$size[0];
$hoehe=$size[1];
$neueBreite=100;
$neueHoehe= intval($hoehe*$neueBreite/$breite);

if($size[2]==1) {
// GIF
$altesBild= imagecreatefromgif("$PicPathIn"."$bild");
$neuesBild= imagecreate($neueBreite,$neueHoehe);
 imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
 imageGIF($neuesBild,"$PicPathOut"."TN"."$bild");
}

if($size[2]==2) {
// JPG
$altesBild= ImageCreateFromJPEG("$PicPathIn"."$bild");
$neuesBild= imagecreate($neueBreite,$neueHoehe);
 imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
 ImageJPEG($neuesBild,"$PicPathOut"."TN"."$bild");
}

if($size[2]==3) {
// PNG
$altesBild= ImageCreateFromPNG("$PicPathIn"."$bild");
$neuesBild= imagecreate($neueBreite,$neueHoehe);
 imageCopyResized($neuesBild,$altesBild,0,0,0,0,$neueBreite,$neueHoehe,$breite,$hoehe);
 ImagePNG($neuesBild,"$PicPathOut"."TN"."$bild");
}

echo "Altes Bild:<BR>";
echo "<IMG SRC=\"$PicPathIn$bild\" WIDTH=\"$breite\" HEIGHT=\"$hoehe\"><BR><BR>";
echo "Neues Bild:<BR>";
$Thumbnail=$PicPathOut."TN".$bild;
echo "<IMG SRC=\"$Thumbnail\" WIDTH=\"$neueBreite\" HEIGHT=\"$neueHoehe\">";
?>
```


Ich hätte zuerst einmal ein paar fragen dazu.

1.

```
// Orginalbild
$bild="Foto.jpg";
```
Könnte ich hier auch einfach sagen, ALLE Bilder die sich in diesem Ordner befinden?

2.
Werden bei diesem Script die Bild-Verhältnisse behalten? Weil verzerrte Bilder sehen vielleicht nnicht ganz so toll aus. Bzw, wenn ja, welcher Befehl macht das?

3.
WANN wird der Script ausgeführt?
Sobald jemand auf diese Seite geht?


Vielen Dank 

greets green


EDIT:

Ok ich habe mir den Script jetzt noch ein paar mal durchgelesen und kam zu dem Schluss das "neue breite = 100" bedeutet: Gut die feste neue breite ist 100 das wäre auch ok, aber NUR bei Querformat. Stellt euch vor ich will die Thubnails in einem Quadrat darstellen welches 100*100 ist. Bei Quer passt es schön hinein. Jedoch bei Hochformat wir es zwar von der breite passen allerdings von der Höhe her viel zu hoch sein. Versteht ihr?


----------



## CIX88 (2. März 2007)

> Script jetzt noch ein paar mal durchgelesen
Und auch mal selber ausprobiert ?
Das würde einige Fragen selber beantworten 

Bild-Verhältnisse ?
Ähhhh wie nennts ich das heute => Dreisatz oder so 

PS: Da imagecreate() nur 256-Farben unterstützt, nehme imagecreatetruecolor() wenn du JPEG oder PNG benutzt.
Bei GIF ist es egal.


----------



## tobee (2. März 2007)

green_phanta hat gesagt.:


> Könnte ich hier auch einfach sagen, ALLE Bilder die sich in diesem Ordner befinden?


Das ist leider nicht möglich. Da müsstest du noch die Funktionen opendir und readddir einbauen.


----------



## CIX88 (2. März 2007)

Ohje, hoffentlich nicht dazu um jetzt den ganzen Ordner durch die oben genannten Image-Funktionen zu jagen ...


----------



## tobee (2. März 2007)

CIX88 hat gesagt.:


> Ohje, hoffentlich nicht dazu um jetzt den ganzen Ordner durch die oben genannten Image-Funktionen zu jagen ...


Wollte ihm sagen das man nicht einfach die Variable $bild in ein Ordnername umtauschen kann, und er den ganzen Ordner dann "parst". 
Tobee


----------



## green_phanta (2. März 2007)

CIX88 hat gesagt.:


> Ohje, hoffentlich nicht dazu um jetzt den ganzen Ordner durch die oben genannten Image-Funktionen zu jagen ...



Warum
Würde das zu lange brauchen
Ich brauch das ja nur einmal, und dann immer dann wenn i9ch ein Bild hinzufüge. Und das kommt vl alle 2 wochen vor oder so.


----------



## tobee (2. März 2007)

green_phanta hat gesagt.:


> Warum
> Würde das zu lange brauchen
> Ich brauch das ja nur einmal, und dann immer dann wenn i9ch ein Bild hinzufüge. Und das kommt vl alle 2 wochen vor oder so.


Das heißt dass du das Skript auf einer eingenen, internen Seite hast?
Läuft das ganze lokal oder übers Internet?


----------



## green_phanta (2. März 2007)

naja, ich hätte mir das so gedacht: die Seite ist zwar im Internet, jedoch geschützt bzw versteckt oder so. Jetzt kann der Admin her gehen wenn er neue Bilder Upgeloadet hat, und die Thubnails aktualisieren.

So wäre das möglich oder?
Nach welchen Prinzip funktioniert "opendir" und so?


----------



## tobee (2. März 2007)

green_phanta hat gesagt.:


> naja, ich hätte mir das so gedacht: die Seite ist zwar im Internet, jedoch geschützt bzw versteckt oder so. Jetzt kann der Admin her gehen wenn er neue Bilder Upgeloadet hat, und die Thubnails aktualisieren.
> 
> So wäre das möglich oder?
> Nach welchen Prinzip funktioniert "opendir" und so?




```
$dir = opendir ( "path" );
while ( $file = readdir ( $dir ) )
{
  echo $file;
}
```


----------

