Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Include(grafika.php)
timon27
post
Post #1





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Mam problem dotyczący includowania.
Posiadam skrypt grafiki zmniejszającą ją i zapisującą do oddzielnego folderu.
Skrypt znajduje się w pliku tworz_min.php.
Jednocześnie chciałbym go wywołać w pliku min.php zawierającym też html, jednak jest to niewykonalne za pomocą metody include.

Gdy uruchamiam min.php po raz pierwszy php zawiera nagłówek grafiki, więc nic nie wyświetla tylko zapisuje grafikę (działa), gdy odświeżę już mam grafikę. Przy czym oczywiście miało działać za pierwszym razem.
Czy jest wyjście z tej sytuacji?


min.php:
Kod
<?
if(!file_exists("miniatury/obrazek.jpg")){
    $szer=100;
    $filename="obrazek.jpg";
    include("tworz_min.php");
}
echo("<img src='miniatury/obrazek.jpg' width=100>");
?>


tworz_min.php
Kod
<?
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($filename);
$new_width = $szer;
$new_height = floor($height*$szer/$width);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($image_p, "miniatury/$filename", 90);
?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
grn
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 4
Dołączył: 1.06.2009

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


W pliku tworz_min.php niepotrzebnie wysyłasz nagłówki. Usuń polecenie header.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(grn @ 26.06.2009, 06:55:40 ) *
W pliku tworz_min.php niepotrzebnie wysyłasz nagłówki. Usuń polecenie header.

Musisz poinformować przeglądarkę, że będzie wyświetlany obrazek.

timon27, spróbuj wywołać plik min.php tak:
  1. <?php
  2. echo("<img src='tworz_min.php' width='100'>");
  3. ?>

Wtedy otrzymasz od razu wyświetlenie obrazka po jego wytworzeniu. Jeżeli chcesz do tego pliku wysłać dodatkowo jakieś informacje, posłuż się:
  1. <?php
  2. echo("<img src='tworz_min.php?&obraz1=$obraz1 />");
  3. ?>

A odbierz w tym pliku:
  1. <?php
  2. $obraz1 = ($_GET['obraz1']);
  3. ?>

I pamiętaj o poprawnych " i ' tongue.gif


--------------------
Go to the top of the page
+Quote Post
grn
post
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 4
Dołączył: 1.06.2009

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


Cytat(Kshyhoo @ 26.06.2009, 07:49:06 ) *
Musisz poinformować przeglądarkę, że będzie wyświetlany obrazek.


Obrazek nie jest wyświetlany tylko zapisywany na dysku.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(timon27 @ 26.06.2009, 00:00:23 ) *
Gdy uruchamiam min.php po raz pierwszy php zawiera nagłówek grafiki, więc nic nie wyświetla tylko zapisuje grafikę (działa), gdy odświeżę już mam grafikę. Przy czym oczywiście miało działać za pierwszym razem.
Czy jest wyjście z tej sytuacji?

Czyli pyta, w jaki sposób wyświetlić grafikę, zaraz po jej wygenerowaniu. Jak znasz inny bądź lepszy sposób, rzuć kodem.


--------------------
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Musisz poinformować przeglądarkę, że będzie wyświetlany obrazek.

A jak otwierasz obrazek via URL, to też ustawiasz MIME?

Ew. można by było dać sleep" title="Zobacz w manualu PHP" target="_manual, ale ciężko powiedzieć.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
bim2
post
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


Hmm nie można tak?:
  1. <?php
  2. imagejpeg($image_p, "miniatury/$filename", 90);
  3. imagejpeg($image_p, null, 90);
  4. ?>


--------------------
Go to the top of the page
+Quote Post
timon27
post
Post #8





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


@bim2
Nie nie mogę. Działa tylko pierwsze polecenie, drugie już nie jest uruchamiane

@Kshyhoo
"Wtedy otrzymasz od razu wyświetlenie obrazka po jego wytworzeniu."
nie działa sad.gif
Twój kod nie uwzględnia najważniejszego if.
Kod min.php nie ma być uruchamiany zawsze. O to mi chodzi, aby uruchamiał się tylko w przypadku gdy miniatura nie istnieje. Miniaturyzacja kosztuje dużo czasu i nie mogę pozwolić by zawsze była uruchamiana. jednocześnie nie chcę tworzyć sam miniatur, ponieważ jest to dodatkowy element, o którym musi pamiętać osoba wrzucająca obrazki, a nie zawsze jestem to ja.
"Czyli pyta, w jaki sposób wyświetlić grafikę, zaraz po jej wygenerowaniu. "
Nie. Po prostu zapisuje plik. za drugim razem działa, bo jest uruchamiany w/w if.

EDIT:
Dzięki Ci bim2, jednak zadziałało. Takie proste, wystarczyło na to "wpaść".

Poprawiany kod:

min.php:
Kod
<?
if(!file_exists("miniatury/obrazek.jpg")){
   echo("<img src='tworz_min.php?szer=100&filename=obrazek.jpg'>");
}else{
   echo("<img src='miniatury/obrazek.jpg' width=100>");
}
?>


tworz_min.php

Kod
<?
header('Content-type: image/jpeg');
list($width, $height) = getimagesize($filename);
$new_width = $szer;
$new_height = floor($height*$szer/$width);
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
$filename="miniatury/".$filename;
imagejpeg($image_p, $filename, 90);
imagejpeg($image_p, null, 90);

?>


Ten post edytował timon27 16.07.2009, 09:17:38
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 10:13