Flashhilfe.de - Flash Community

Bilder verkleinern mit PHP Script

 


AntwortenRegistrieren Seite1  

abgemeldeter Benutzer#1
13.12.2007, 13:51

Hallo!

Ich verwende auf meiner Homepage ein PHP Script, das Bilder auf eine gewünschte Größe verkleinert. Das klappt auch alles so weit. Ich habe auf meinem Server einen Ordner "images". Wenn ich jetzt ein Bild verkleinern will, klappt das nur wenn ich den Pfad "/images/001.jpg" (zum Beispiel) angebe. Ein Pfad wie zum Beispiel "http://neggot.com/images/001.jpg" wird nicht akzeptiert. Hier findet ihr mein Script:

PHP:
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
<?php
if (!$width)
{
$width 150;
}
$sourceimage $image;
$info getimagesize($sourceimage);
$widthold $info[0];
$heightold $info[1];
$height ceil($heightold*$width/$widthold);
switch(
$info[2])
{
case 
1//Gif
$imageold imagecreatefromgif($sourceimage);
break;
case 
2//Jpeg
$imageold imagecreatefromjpeg($sourceimage);
break;
}
$imagenew imagecreatetruecolor($width$height);
imagecopyresampled($imagenew$imageold0000$width$height$widthold$heightold);
header("Content-type: image/jpeg");
imagegif($imagenew);
imagedestroy($imageold);
imagedestroy($imagenew);
?>


Wo liegt der Fehler? Oder ist es ein Problem mit dem Server? Vor ca. einer Woche hat das gleiche Script noch funktioniert...
Danke schonmal im Vorraus.

Nils

burnZ#2
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

13.12.2007, 15:07

Die Image Funktionen arbeiten mit lokalen Pfaden und keinen Webserverpfaden (HTTP) da das ganze nur lokal läuft. Du musst also schaun deine Pfadangaben lokal zu regeln.

Tseng#3
Benutzerbild von Tseng
Beiträge: 51
Registriert: Oct 2007

13.12.2007, 15:32

Es könnte auch sein, dass der Serveradmin das öffnen von URLs verbietet. Oder der aufgerufene Server erlaubt nur den Zugriff auf Bilder, wenn der Zugriff von der selben Domain ausgeht, zudem das Bild gehört. Also, dass kein direktes Anzeigen des Bildes funktioniert.

CIX88#4
Benutzerbild von CIX88
Beiträge: 261
Registriert: Feb 2005

15.12.2007, 13:19

> wird nicht akzeptiert

Schön wäre es, wenn man die Fehlermeldung mit postet.

McMannus#5
Benutzerbild von McMannus
Beiträge: 58
Registriert: Nov 2007

17.12.2007, 17:33

mh also ich hab da in nem projekt mal ne funktion geschrieben, vielleicht kannst du es ja brauchen

Grüßle

PHP:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?
//parameter
//$bild : Der Ausganspfad des Bildes (quasi das Original)
//$skaliergroesse : L&auml;nge bzw. H&ouml;he (je nachdem was gr&ouml;&szlig;er ist) der Kopie 
//$speicherort : Pfad zur Speicherung der Kopie (Name erforderlich)

function skalieren($bild,$skaliergroesse,$speicherort) {
 
$bilddaten getimagesize($bild);
 
$breite $bilddaten[0];
 
$hoehe $bilddaten[1];
 
$typ $bilddaten[2];
  switch (
$typ) {
    case 
1:
     
$imghandle imagecreatefromgif($bild);
      break;
    case 
2:
     
$imghandle imagecreatefromjpeg($bild);
      break;
    case 
3:
     
$imghandle imagecreatefrompng($bild);
      break;
  }
  if (
$breite $hoehe) {
   
$skalierfaktor $skaliergroesse/$breite;
   
$neuehoehe $skalierfaktor $hoehe;
   
$neuesbild imagecreatetruecolor($skaliergroesse,$neuehoehe);
   
imagecopyresized($neuesbild,$imghandle,0,0,0,0,$skaliergroesse,$neuehoehe,$breite,$hoehe);
    switch (
$typ) {
      case 
1:
       
imagejpeg($neuesbild,$speicherort);
        break;
      case 
2:
       
imagegif($neuesbild,$speicherort);
        break;
      case 
3:
       
imagepng($neuesbild,$speicherort);
        break;
    }
  }
  else {
   
$skalierfaktor $skaliergroesse/$hoehe;
   
$neuebreite $skalierfaktor $breite;
   
$neuesbild imagecreatetruecolor($neuebreite,$skaliergroesse);
   
imagecopyresized($neuesbild,$imghandle,0,0,0,0,$neuebreite,$skaliergroesse,$breite,$hoehe);
    switch (
$typ) {
      case 
1:
       
imagejpeg($neuesbild,$speicherort);
        break;
      case 
2:
       
imagegif($neuesbild,$speicherort);
        break;
      case 
3:
       
imagepng($neuesbild,$speicherort);
        break;
    }
  }

?>


CIX88#6
Benutzerbild von CIX88
Beiträge: 261
Registriert: Feb 2005

26.12.2007, 12:42

Sieht ganz gut aus, noch besser wäre es mit ImageDestroy() am Ende.
http://www.mediacix.de/code/Thumbnail-mit-GDlib-einfach-98-code.html

Und ich glaube, dass bei imagecopyresized() die Qualität nicht so toll ist, weshalb ich ImageCopyResampled() empfehle.

[http://www.cix88.de] [http://www.regex-tester.de]
burnZ#7
Benutzerbild von burnZ
Beiträge: 2827
Wohnort: Bayern
Registriert: Aug 2005

28.12.2007, 11:56

code liesse sich auch noch stark minimieren, die switch statements sind absolut identisch trotzdem doppelt. :)


AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de