Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP]Biblioteka GD - kadrowanie przy pomocy jCrop, Proszę o pomoc w zmuszeniu do działania biblioteki gd z jcrop
Archon816
post 4.04.2013, 11:39:11
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2013

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


Witam!
Muszę wykonać funkcjonalność która pozwoli na kadrowanie obrazów i zapisywanie na komputerze.

1.
Nie mogę sobie poradzić z server side. Próbowałem postępować według tego:
http://deepliquid.com/content/Jcrop_Implem...ion_Theory.html

Niestety bez skutku - całość można zobaczyć na stronie:
http://fototapety.fosterprint.pl/node/15

W firebug konsola wyświetla "Image corrupt or truncated".
Bardzo proszę o znalezienie przyczyny i w miarę możliwości pokierowanie bo kompletnie nie znam php.

2.
Kod php który aktualnie mam jest taki sam jak na stronie deepliquid z linku który podałem wyżej, jedynie ścieżka do pliku jest inna:

Kod
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = 'demo_files/flowers.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $targ_w,$targ_h,$_POST['w'],$_POST['h']);

header('Content-type: image/jpeg');
imagejpeg($dst_r, null, $jpeg_quality);


I tu się rodzi drugie pytanie: co umieścić zamiast "$src = 'demo_files/flowers.jpg';" żeby automatycznie podstawiać adres tego obrazka który aktualnie kadrujemy?

Trzecie pytanie - co zmienić w kodzie, żeby rozdzielczość skadrowanego obrazka nie była sztywno ustawiona, tylko zależna od tego jak ustawiona jest ramka kadrująca (taka jaka powinna być rzeczywista wielkość kadru biorąc pod uwagę rozdzielczość całego obrazka)?

Mam nadzieję, że pytania są w miarę zrozumiałe.
Bardzo proszę o pomoc.

Witam!
Zauważyłem, że jak zamienię w kodzie php dwie ostatnie linijki na:
Kod
// Comment out the header() call
// header('Content-type: image/jpeg');

imagejpeg($dst_r, $output_filename, $jpeg_quality);


to wyświetla się dziwny ciąg znaków. Próbowałem go zapisać jako jpg ale bez skutku.
Jeszcze raz bardzo proszę o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
_Borys_
post 4.04.2013, 12:19:30
Post #2





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


Na początku skryptu włącz raportowanie błędów

jak masz gdzieś header tak jak w drugim kodzie to pozostaw narazie zakomentowane.
Te znaczki dziwne to właśnie obrazek, spróbuj znaleźć błąd wśród tych znaczków, powinien być na początku albo końcu gdzieś jeśli się pokaże.
Go to the top of the page
+Quote Post
Archon816
post 9.04.2013, 09:04:37
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2013

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


Dzięki za odpowiedź!
Po zastosowaniu error_reporting jest taki błąd:
Kod
Notice: Undefined variable: output_filename in /users/fosterprint/www/fototapety.fosterprint.pl/sites/all/themes/foster/js/crop.php on line 18

Proszę o pomoc co z tym zrobić.

Odnośnie drugiego pytania, mogę prosić o jakąś poradę jak to zrobić?
Można na przykład pobrać adres obrazka do zmiennej w js i pobrać go do skryptu php?
Jeśli tak, to jak by to mniej więcej wyglądało?

PS:
Kod mam w tym momencie taki:
Kod
error_reporting(-1);
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = 'http://fototapety.fosterprint.pl/sites/default/files/shutterstock_9759766.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $targ_w, $targ_h );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $targ_w,$targ_h,$_POST['w'],$_POST['h']);

// Comment out the header() call
// header('Content-type: image/jpeg');

imagejpeg($dst_r, $output_filename, $jpeg_quality);


Proszę o pomoc będę wdzięczny wink.gif

Edit:
Witam ponownie, zmieniłem ostatnią linijkę na:
Kod
imagejpeg($dst_r,null,$jpeg_quality);

Błąd już się nie wyświetla, ale dalej mam tylko ciąg znaków zamiast obrazka sad.gif
Proszę o pomoc!
Go to the top of the page
+Quote Post
_Borys_
post 9.04.2013, 09:43:15
Post #4





Grupa: Zarejestrowani
Postów: 587
Pomógł: 190
Dołączył: 5.02.2011
Skąd: 64-800

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


No to teraz odkomentuj header aby wyświetlić obrazek.
Zakomentowany był po to tylko aby zobaczyć treść błędu.
  1. header('Content-type: image/jpeg');
Go to the top of the page
+Quote Post
Archon816
post 10.04.2013, 21:02:45
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2013

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


Dzięki za odpowiedź!
Odkomentowałem header, niestety wyświetla się tylko miniaturka zastępująca obrazek sad.gif
Co mogę z tym zrobić?

Edit:
Zauważyłem jeszcze być może istotną rzecz: po zapisaniu strony jako plik jpg, photoshop poprawnie go otwiera - więc chyba nie jest tak źle. Natomiast już windowsowa przeglądarka obrazów sobie nie radzi sad.gif
Go to the top of the page
+Quote Post
matiit
post 10.04.2013, 21:10:58
Post #6





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


Sprawdź czy przed <?php nie masz żadnej spacji/znaku nowej linii itd
Go to the top of the page
+Quote Post
Archon816
post 13.04.2013, 12:34:33
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 3.04.2013

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


Witam!
Dzięki, obraz się wyświetla. Zastanawiam się teraz, dlaczego przeglądarka pokazywała błąd: "Notice: Undefined variable: output_filename" - koniecznie potrzebuję, żeby właśnie ten obraz pobrać na dysk zamiast wyświetlania.
Próbowałem coś takiego:
Kod
imagejpeg($dst_r, 'obraz.jpg', $jpeg_quality);

ale niestety nic się nie wyświetla ani nie pobiera - pusta strona.
Proszę o pomoc.

Edit:
Zauważyłem, że pliki się zapisują, ale nie na komputerze tylko na serwerze w folderze w którym umieszczony jest plik php.
Proszę o pomoc jak to można naprawić.
Przesyłam aktualny kod:

Kod
<?php

error_reporting(-1);
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = 'http://fototapety.fosterprint.pl/sites/default/files/shutterstock_9759766.jpg';
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $_POST['w'],$_POST['h'] );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $_POST['w'],$_POST['h'],$_POST['w'],$_POST['h']);

// Comment out the header() call
header('Content-type: image/jpeg');

imagejpeg($dst_r,'obraz1.jpg',$jpeg_quality);

?>


Bardzo proszę o pomoc.

Edit:
Poradziłem sobie - jeszcze raz wielkie dzięki.
Poniżej aktualny działający kod.
Pozdrawiam!
Kod
<?php
error_reporting(-1);
$targ_w = $targ_h = 150;
$jpeg_quality = 90;

$src = $_POST['adres'];
$img_r = imagecreatefromjpeg($src);
$dst_r = ImageCreateTrueColor( $_POST['w'],$_POST['h'] );

imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'],
    $_POST['w'],$_POST['h'],$_POST['w'],$_POST['h']);


header("Content-Transfer-Encoding: binary");
header('Content-Description: File Transfer');
header('Content-Type: image/jpeg');
header('Content-Disposition: attachment; filename=asdf');
imagejpeg($dst_r,'',$jpeg_quality);

?>
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: 24.07.2025 - 17:19