Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Tworzenie obrazków nie działa, generowanie przez kopiowanie obrazka blabla.php?id=08
mikolodz
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 25.09.2010

Ostrzeżenie: (0%)
-----


Witam,
widzę, że problem, który opisałem wczoraj w dziale MySQL nie jest taki prosty jak się spodziewałem
Nie działało mi wyświetlanie obrazków przechowywanych w BLOBIE.
Niestety po zmianie sposobu zapisu na zapisywanie na serwerze, które notabene działa bardzo ładnie, ze zmianą rozmiaru formatu itp., nadal mam problem z wyświetlaniem obrazków.

taki skrypt u mnie nie działa, mimo, że generowanie i zapisanie na serwerze sie spisuje:
(zawartosc pliku generuj.php)
Kod
<?
        header("Content-type: image/gif");
        $obrazek = ImageCreate(80,40);
        ImageGif($obrazek);
        ImageDestroy($obrazek);    

?>

po otworzeniu tego pliku uzyskuje informacje:

Cytat
Obrazek "http://mojserwer/generuj.php" nie może zostać wyświetlony, ponieważ zawiera błędy.


To samo dzieje się kiedy robię:

showavatar.php?id=mysikun

Kod
<?
    include ('funkcje_glowne.php');
    $db = polaczZBaza();
    $id = $_GET['id'];
    $zapytanie = "select avatar from `avatars` where id='$id'";
    $wynik = $db -> query($zapytanie);
    if(($wynik -> num_rows) != 0){
        $wiersz = $wynik -> fetch_assoc();
        $nazwa = $wiersz['avatar'];
           $sciezka = "upload/".$nazwa;
           $img = imagecreatefromjpeg($sciezka);
           header("Content-type: image/jpeg");
           imagejpeg($img);
}    
    $db -> close();
?>


uzyskuję także ten sam komunikat.
chciałem wcześniej wyświetlać te obrazki w innym pliku "pokazavatar.php" poprzez:
<img scr="showavatar.php?id='.$id.'"/>";
ale oczywiście nie może to działać.

Proszę wskażcie mi mój błąd, bo straciłem na to zagadnienie blisko dobę i na prawdę nie mogę znaleźć błędu.
Czemu przy wyświetlaniu wygenerowanych obrazków wyskakuje mi błąd? Generowanie i zapis przebiegają poprawnie

np ten kod działa:

Kod
<?
     $db = polaczZBaza();
    // wczeczniej SĄ PODANE zmienne nazwa itp
    $sciezka = "upload/".$nazwa;
    
    if($sp[1] == "jpeg"){   // Sprawdzamy jakie rozszerzenie miał plik i wykonujemy dla niego nowy obrazek;
    $img = imagecreatefromjpeg($sciezka);
    }
    elseif($sp[1] == "png") {
    $img = imagecreatefrompng($sciezka);
    }
    elseif($sp[1] == "jpg") {
    $img = imagecreatefromjpeg($sciezka);
    }
    elseif($sp[1] == "gif") {
    $img = imagecreatefromgif($sciezka);
    }
    
    $a = imagesx($img);   // pobieramy szerokość i wysokość
    $b = imagesy($img);
    
    if($a > $b){   //Zmieniamy wielkość obrazka w tym wypadku szerokość musi być 150 a wysokość proporcjonalna.
    $na = 150;
    $nb = 150 * ($b / $a);
    }elseif($a < $b){
    $na = 150 * ($a / $b);
    $nb = 150;
    }else{
    $na = 150;
    $nb = 150;
    }
    
    $new_img = imagecreatetruecolor($na, $nb); // tworzymy nowy obrazek o danych wymiarach
    $cz = ImageColorAllocate($new_img,8 ,24 ,40); // tworzenie koloru. atrybuty to kolejno nowy obrazek i 3 kolory RGB - Red Green Blue

    ImageFill($new_img,1,1,$cz);  // tworzenie tła obrazka
    imagecopyresampled($new_img, $img, 0, 0, 0, 0, $na, $nb, $a, $b);

     $s = explode(".",$nazwa);
    
    
    unlink('upload/'.$nazwa); // usuwamy poprzedni plik avataru użytkownika
    @imagejpeg($new_img, "upload/".$s[0].".jpg", 100); // cyfra 9 oznacza jakosc miniaturki, osobiscie polecam wartosc 100
    $sciezka_do_pliku2 = "upload/".$s[0].".jpg";
    
    $db -> query("UPLOAD avatars SET avatar='$sciezka_do_pliku2' where id='$id'");
    $db -> close();

    }
}
?>


Po zapisie na serwerze plik ma wszystkie zadane parametry i się normalnie otwiera.
Proszę o pomoc..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Skoro obrazki generują się dobrze i po zapisaniu ich na serwer nie ma problemu winnym nie jest sam skrypt generujący obrazki tylko sposób wysyłania ich do przeglądarki. Upewnij się, że zwracając wynik do przeglądarki nie przesyłasz jakiś niepotrzebnych znaków(np. zanków BOM) lub nagłówków. Zalecaną praktyką jest pomijanie na końcu skryptów php znaku kończącego blok php '?>' oraz buforowanie wyniku przy pomocy funkcji ob_start.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 20:24