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);
?>
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();
?>
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();
}
}
?>
$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..