Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Ucinanie fragmentu zdjęć
Tomplus
post 18.08.2008, 10:00:02
Post #1





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


witam,
mam
mały problem i nie mogę sobie z nim poradzić, a mianowicie chciałem z obrazka o rozmiarach 450x450 uciąć jego środkową część do 350x350, ale jakoś nie mogę tego zrobić.

  1. <?php
  2. $zdjecie = "foto.jpg"; //450x450
  3. //$data = getimagesize($zdjecie);
  4. $zdjecie = imagecreatefromjpeg($zdjecie);
  5. $zdjecie = imagefilledrectangle ($zdjecie,0,100,450,350,imagecolorallocate($zdjecie,255,255,255));
  6. echo "<img src='{$zdjecie}'>";
  7. ?>


po tym skrypcie mam pustkę czyli nic się nie wyświetla.

Ten post edytował Tomplus 18.08.2008, 10:01:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
kipero
post 18.08.2008, 10:02:21
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

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


Na początek to:
  1. <?php
  2. echo "<img src='{$zdjecie}'>";
  3. ?>

zamień na:
  1. <?php
  2. header('Content-type: image/jpeg');
  3. imagejpeg($zdjecie);
  4. ?>


Teraz działa?

Ten post edytował kipero 18.08.2008, 10:02:37


--------------------
Go to the top of the page
+Quote Post
golaod
post 18.08.2008, 10:05:27
Post #3





Grupa: Zarejestrowani
Postów: 419
Pomógł: 42
Dołączył: 12.08.2008
Skąd: Wrocław

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


Po co powielać ten sam błąd 5 tysięcy razy ?
http://pl.php.net/manual/pl/function.imagejpeg.php
Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 10:26:51
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


@kipero
ale wtedy mi wyświetli jako grafikę cały plik, a ja chce aby został umieszczony w HTMLu czyli <img/>

W manualu działa tak że zamiast wyśietlić mi WWW z treścią i obrazkiem, kreuje mi się sam obrazek - nawet nie obrazek, bo żadna tresc mi sie nie wyswietla, nawet wczesniejsze echo.

Potrzebuje wsadzić w <img/> ucięte zdjęcie.
Go to the top of the page
+Quote Post
Trojan
post 18.08.2008, 10:28:53
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


w php tworzysz obrazek tylko, wyświetla ci się on jako jpeg. Na swojej stronie dajesz po prostu link do niego w znaczniku <img>

<img src="http://jakisadres.pl/obrazek.php">

Ten post edytował Trojan 18.08.2008, 10:30:03
Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 10:35:25
Post #6





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


zgadza się, mogę tak zrobić, tylko mnie chodzi żeby wyswietlić obrazek w tym samym pliku skryptu


  1. //HTML
  2. <?php
  3. //instrukcja...
  4. ?>
  5. //HTML
  6. <?php
  7. //instrukacja ucinajaca obrazek
  8. ?>
  9. //echo <img>
  10. //dalszy ciag HTML
Go to the top of the page
+Quote Post
Trojan
post 18.08.2008, 10:39:19
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


Jeżeli zmienisz wartość header na header('Content-type: image/jpeg'); to nie możesz tam wyświetlić już innych informacji za pomocą echo.

Powiedz czemu nie możesz zrobić oddzielnego pliku dla obrazka i wstawiać go do HTML-a questionmark.gif może coś takiego questionmark.gif

PLIK obrazek.php
  1. <?php
  2. $zdjecie = $_GET['zdjecie']; //450x450
  3. //$data = getimagesize($zdjecie);
  4. $zdjecie = imagecreatefromjpeg($zdjecie);
  5. $zdjecie = imagefilledrectangle ($zdjecie,0,100,450,350,imagecolorallocate($zdjecie,255,255,255));
  6. header('Content-type: image/jpeg');
  7. imagejpeg($zdjecie);
  8. ?>


twój plik główny
  1. //HTML
  2. <?php
  3. //instrukcja...
  4. ?>
  5. //HTML
  6. //instrukacja ucinajaca obrazek
  7. <img src="http://jakisadres.pl/obrazek.php?zdjecie=foto.jpg">
  8. //echo <img>
  9. //dalszy ciag HTML


Ten post edytował Trojan 18.08.2008, 10:44:34
Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 10:44:07
Post #8





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


wiem że nie mogę wyświetlić innych danych stosując header().

Co do tego dlaczego nie mogę tworzyć oddzielnego pliku na funkcję ucinającą grafikę, to mam swoje powody i dlatego zwracam sie z pomocą tutaj na forum, aby ten problem rozwiązać.
Go to the top of the page
+Quote Post
Trojan
post 18.08.2008, 10:48:37
Post #9





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


żeby problem rozwiązać trzeba wiedzieć w czym problem dry.gif Od razu mówię w jednym pliku tego nie zrobisz. Zobacz jeszcze mój poprzedni post może chodzi ci o dodawanie parametrów do obrazka questionmark.gif

Ten post edytował Trojan 18.08.2008, 10:49:15
Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 10:54:22
Post #10





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


zasada działania skryptu jest prosta:
$zdjecie -> uciecie do rozmiaru 350x350 -> wyswietlenie w HTML w tagu <img/>
Go to the top of the page
+Quote Post
nospor
post 18.08.2008, 10:54:38
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Od razu mówię w jednym pliku tego nie zrobisz.
Ale co ty ze tak powiem "bredzisz" ?

Zrobi, tylko robi to źle. Tomplus umiesz utworzyc plik graficzny w php i go zapisac na dysku? Jak nie to sie naucz. Twoj poczatkowy kod jest temu bliski ale jeszcz brakuje chociazby imagejpeg().

Dodatkowo tamten twoj kod nie ma prawa dzialac, bo nadpisywales zmienna $zdjecie swoimi kodami z gd.
skoto $zdjecie = 'twoj plik.jpg' to nie mozesz potem tej zmiennej nadpisywac, bo przeciez potem wkladasz ją jako źródlo do <img>.
Do operacji na pliku tworz inne zmienne


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 16:05:01
Post #12





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


@nospor
tworzyć potrafiłem, wyświetlać w formie jak podał Trojan również, ale zapisywać, jakoś uleciało ta wiedza, tak samo jak następujący problem.



Stworzyłem funkcje która ma w swoim załozeniu ucinać i zmniejszać grafikę.

  1. <?php
  2. function foto ($od, $do, $rozmiar, $jakosc)
  3. {
  4.  
  5. $pic = @imagecreatefromjpeg($od);
  6. if ($pic)
  7. {
  8. $pic2 = @imagecreatetruecolor ($rozmiar, $rozmiar);
  9. $w1 = imagesx($pic);
  10. $h1 = imagesy($pic);
  11. $w2 = $rozmiar;
  12. $h2 = $w2 * $h1 / $w1;
  13. imagecopyresized($pic2, $pic, 0, 0, 0, ($h1/2)-($w1/2), $w2, $h2, $w1, $h1);
  14. imagefilledrectangle ($pic2,0,0,$w1,($w2*100/$w1),imagecolorallocate($pic2,205,205,205));
  15. imagefilledrectangle ($pic2,0,$h2-($w2*100/$w1),$w1,$h1,imagecolorallocate($pic2,205,205,205));
  16. ImageJPEG ($pic2, $do, $jakosc);
  17. }
  18.  
  19. }
  20. $foto1 = "foto1.jpg";
  21. $zdjecie = "foto.jpg";
  22. foto($zdjecie,$foto1,450,100);
  23. echo "<img src='foto1.jpg'/>"; //dziala
  24. ?>


Problem jest że nie ucina tylko zamazuje fragment obrazku, a potrzebuje ucięty, czyli chce się pozbyć nie potrzebnego fragmentu obrazu.
Jak mam to zrobić ?
Jaki błąd popełniam w funkcji ?

Proszę o pomoc w tej kwestii.

Ten post edytował Tomplus 18.08.2008, 18:26:44
Go to the top of the page
+Quote Post
dadexix
post 18.08.2008, 18:04:34
Post #13





Grupa: Zarejestrowani
Postów: 439
Pomógł: 21
Dołączył: 28.06.2007
Skąd: Bielsko-Biała

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


taki sposob jest nie odpowiedni i nie wykonywalny... a w ten sposob pokazujesz obrazek foto1.jpg ktory masz na dysku..


--------------------
"Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...]
Grins: mów normalnie do mnie a nie po polsku
Ja: normalnie to znaczy jak?
Grins: No w PHP... inaczej mój parser ledwo kuma:)
Go to the top of the page
+Quote Post
Tomplus
post 18.08.2008, 21:41:57
Post #14





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


wg. mnie i mojego doświadczenia z tym skryptem, pokazuje obrazek który został stworzony (zapisany na dysk) przez funkcję foto(), więc jest wykonalny - tylko kwestia w tym dlaczego lub jak uciąć.

@dadexix
jeżeli znasz sposób lepszy to przedstaw go.

okej, temat zamykamy
w sumie doradzić trzebało mi z jedną rzeczą do tego skryptu:
czyli zastosować funkcję imagecopyresampled();

funkcja dziala podobnie jak imagecopyresized(), tylko że w obrębie stworzonego obrazka możemy przesuwać obrazkiem który wczytaliśmy. Przesunięty obrazek - zapisać i gotowe.


Największą pomoc wniósł do mojego problemu nospor i jemu dziękuje szczególnie.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:13