Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]imagecopyresampled - problem ze zmniejszeniem obrazu
Forum PHP.pl > Forum > Przedszkole
slimboot
Ten temat zapewne był już poruszny, ale przeglądałem google, zaglądałem do manuala i testowałem te wszystkie podane tam skrypty i u mnie żaden nie działa. Wyskakuje mi błąd:

Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\formatowanieobrazka\index.php:8) in c:\usr\krasnal\www\formatowanieobrazka\index.php on line 23
˙Ř˙ŕJFIF˙ţJ÷ŘCl.ÍŁůyŠfoăŠh§ľ˛ęrÉc=ĐűrIlm&3ŰÄňšÁš`ýĄř)ý‹<wq_^Cw ĹşÜMÁ˛šś›Í×yk{o-Ľ–Xoá1IŞEnQâ™â*őřťđ:Î{ôć[‹xm/­IžŢma$Ó¤ű`ś‚éäkin&O>iínĺľÔVŢk{´vY$ÎH˙`ţ řžŃľŢŸcŹO"‡ś’6äŢL‰nň˝Žą–öÓÇΓYˆźŸśy œő‡áävÚËEWöpüń}žtŇín"Ö7Ş7›46ˇZĄš”3kŽÍ{ţŸgćŰZĒZN>šđ§†Ž•ZÚÎ[a§MĎ&œ,őkh H’V˛ż{˜Ú8] žDYŰŔfšŕÝĆł-|wđŢóQ eoyáČN—ŠĎ'ÚŁ´žĘŰ]†O%ÜϡżžŐoĄœ2ââKŚť ...... itd.

linia 23 to to miejsce:
CODE

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

Nie mam pojędcia co jest nie tak, MĘCZE SIĘ Z TYM JUŻ DRUGI DZIEŃ!

Jeżeli umiesz mi pomóc, to DZIĘKI , bo ja już się cały gotuję

A tak wygląda skrypt:

CODE


$filename = ("obrazek.jpg");


$width = 200;
$height = 200;


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


list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_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);
NEO.pl
Rozumiem ze pisac potrafisz ale czytac juz nie? -> "Cannot modify header information - headers already sent by". Jestem mocno ciekaw coz takiego robiles z tymi paroma linijkami przez 2 dni. Poza tym: http://pl2.php.net/manual/en/book.outcontrol.php
slimboot
No cóż jestem początkującym programistą, dlatego tez pisze post w dziele "przedszkole".

Rozumiem, ze ta linijka z błędem w tłumaczeniu na język polski znaczy: "Nie można zmienić informacje nagłówka - już nagłówki wysyłane przez..."

Ale niestety, nie rozumiem co dokładnie, to oznacza, i co powinienem zrobić, zeby ten skrypt działał, właśnie, dlatego umieściłem tutaj post
mat-bi
Ojej no:

1. Umieszczasz z samego początku nagłówki
2. Robisz ob_start
slimboot
No dobra, komunikat o błędzie zniknął, ale nadal wyświetla mi się ciąg znaków i wiem, ze jest to efekt ostatniej linijki w kodzie:

˙Ř˙ŕJFIF˙ţ=CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 1000 ˙ŰC˙ŰC
˙Ŕp–"˙Ä ˙Äľ}!1AQa"q2‘Ą#BąÁRŃđ$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdef.... itd.

Po za tym obraz, chociaż zostaje właściwie pobrany, to jednak nie zostaje sformatowany.

Jak zapisać sformatowany obraz?

Już mam, doszedłem do rozwiązania ! Dla zainteresowanych podaje cały skrypt, moze komuś, to tez pomoże:

Kod
<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    <meta name="Description" content="Tu wpisz opis zawarto?ci strony" />
    <meta name="Keywords" content="Tu wpisz wyrazy kluczowe rozdzielone przecinkami" />
    <title>Tu wpisz tytuł strony</title>
</head>
<body>
<?
$filename = ("obraz.jpg");


$width = 200;
$height = 200;


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


list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_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,"obrazsformatowany.jpg");







?>
</body>
</html>
<?php

ob_end_flush();

?>


JUż mam ! Doszedłem jakoś do rozwiązania, dla zainteresowanych podaje cały, DZIAŁAJĄCY! skrypt, łącznie z ramami html :


Kod
<?php

function callback($buffer)
{
  // replace all the apples with oranges
  return (str_replace("apples", "oranges", $buffer));
}

ob_start("callback");

?>

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
    <meta name="Description" content="Tu wpisz opis zawarto?ci strony" />
    <meta name="Keywords" content="Tu wpisz wyrazy kluczowe rozdzielone przecinkami" />
    <title>Tu wpisz tytuł strony</title>
</head>
<body>
<?
$filename = ("obraz.jpg");


$width = 200;
$height = 200;


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


list($width_orig, $height_orig) = getimagesize($filename);

$ratio_orig = $width_orig/$height_orig;

if ($width/$height > $ratio_orig) {
$width = $height*$ratio_orig;
} else {
$height = $width/$ratio_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,"obrazsformatowany.jpg");







?>
</body>
</html>
<?php

ob_end_flush();

?>
lukaskolista
swoja droga czemu uzywasz funkcji ob_...()? Czesto zdarza mi sie zajmowac "obrobka" grafiki w php i nigdy nie widzialem potrzeby ich uzycia (przy najmniej tak pisalem kod, zeby nie bylo)
slimboot
Cytat(lukaskolista @ 25.03.2011, 08:34:47 ) *
swoja droga czemu uzywasz funkcji ob_...()? Czesto zdarza mi sie zajmowac "obrobka" grafiki w php i nigdy nie widzialem potrzeby ich uzycia (przy najmniej tak pisalem kod, zeby nie bylo)



Właściwie masz racje, dodałem już wcześniej cały skrypt, do strony, bez tej funkcji i działałała bez problemu więc nie zwróciłem na to uwagi, by to było potrzebne, a wpisałem to, ponieważ urzytkownik mat-bi mi coś takiego polecił.

Swoją drogą, szkoda, że na tym forum, nie ma możliwości edytowania odpowiedzi, bo już dawno bym to poprawił.

Dzięki pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.