Skocz do zawartości

Tworzenie miniatur błąd


Rekomendowane odpowiedzi

Witam

Do tworzenia miniatur na stronie urzywam tego skryptu:

<?php
// The file
$filename = 'pliki/zdjecia/'.$kat.'/'.$id.'.jpg';

// Set a maximum height and width
$width = 100;
$height = 100;

// Content type
header('Content-type: image/jpeg');

// Get new dimensions
list($width_orig, $height_orig) = getimagesize($filename);

if ($width && ($width_orig < $height_orig)) {
  $width = ($height / $height_orig) * $width_orig;
} else {
  $height = ($width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, null, 100);
?>

Skrypt w pliku 1.php gdzie jest tylko on działa jednak po wrzuceniu an strone nie pokazuje sie obrazek tylko wywala takie coś:

Warning: Cannot modify header information - headers already sent by (output started at d:\usr\apache\httpd\html\a\tapeta.php:7) in d:\usr\apache\httpd\html\a\tapeta.php on line 98
˙Ř˙ŕÉywşuŐŇÜĹ^Ű\EćXJżb1tiUĄRyâ0XÚÄaĽ ĘSQĽ(Şľ(ĹÉÍş5$ŠŐQ2´ăŚ˙+d´mĂ;9lŰ=;ädŕőŻÓŮźEâ9 ľĘéöń5ŢŁyhŹ^ÖÖ#$ĺXŁÚ(K-,¤šuâYឧ;ĆńçŇŇé˘ÖV÷ôIhŰM;ODq0~ŇŁćşvßis_źUßUe˝ľ+üBń6ŁK{ŤÜÁ4Z|Â}6ęÖÉ.RÚ #IDŚ0˛¤rÇx÷c43ÄĂăŢÍŹ_Î%˝ytŰ#ćĎ<ÖihƲ¨@ťB$üČŔAM§éďž:ş˝ľÂÚ{ ĺ-¨[Ęó\°3ÜÝ:ĺÁr_tj-řŰKżé|9¤ÂĘÎ ýnč9-sőĚPŰB¤ŢS<ŞĹ\nĘa,ßaŁĽHÂŰ~ÍÇľ8ŮśţÓM'5ČűŐ'U7NŁI9ť?zúEZÚ´Ów},ÖiiĽ_xĘę}Q`Xź7¤>ČńŹPJTË&÷źc,AŤG$Ľř˙ÍŞk:vV˛JŐą{IdňĎyk9ŕ ĘśŇ: ¨ËŔëó˙gÎÇÚ

Skrypt pobiera zmienne z adresu. Z góry będe wdzięczny za pomoc bo już nie wiem co zrobić :)

Odnośnik do komentarza
Udostępnij na innych stronach

nawet nie może być spacja w kodzie...

Warning: Cannot modify header information
świadczy o tym, że jest coś wysyłane.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dobrze:

<?
header('Content-type: image/jpeg');
// kod...

Źle:

  <?

header('Content-type: image/jpeg');
// kod...

chodzi o odsunięcie znacznika <? od lewej krawędzi edytora

Źle:

<?

header('Content-type: image/jpeg');
// kod...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Drugi przykład też jest dobry...

chodziło o odsunięcie znacznika <? od lewej krawędzi edytora. Źle to przedstawiłem, ale już poprawiłem ;)

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Albo zastosuj buforowanie wyjścia
Tylko po co używać buforowania tam gdzie tego faktycznie nie potrzeba ;)

Każda wywoływana funkcja PHP zabiera cenne zasoby serwera... A w tym wypadku jest to całkowicie zbędne.

/*po chwili*/

Poza tym uruchomiłem bez modyfikacji kod podany w poście i działa bez problemu.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dla mnie na pierwszym miejscu korzyść z zastosowania tej funcji, to zmniejszenie transferu przez zastosowanie kompresji: ob_start("ob_gzhandler"). Na drugim miejscu to wygoda w uzywaniu funkcji header, setcookie itp.

Jeżeli skrypt jest mały, to faktycznie nie ma potrzeby stosowania tej funkcji

.

Odnośnik do komentarza
Udostępnij na innych stronach

korzyść zmniejszenie transferu
ale nie dla grafiki. Dla plików z kodem korzysci są duże...

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

@Mion No chyba by było nonsensem kompresować coś co już jest skompresowane, w dodatku grafika nie przechodzi przez parsera na serwerze.

@wlamywacz Jezeli Twojego problemu nie rozwiazali rowiez na forum php.pl to istnieje jeszcze jedna mozliwość:

Jeśli plik z tym skryptem od tworzenia miniatur jest dołączany do innego pliku, a został on napisany w edytorze z kodowaniem UTF-8, to tez mogą sie pojawić tego typu informacje o błędzie pomimo że przed funkcją header nie wysyła się żadnego tekstu do przeglądarki.

Jest to spowodowane budową pliku zakodowanego w UTF. Plik zakodowany w ten sposób może zawierać nagłówek BOM. I objawia się to w ten sposób, że do przeglądarki wysyłana jest pusta linia lub kilka krzaków (dziwnych znaków).

.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności