Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Biblioteka GD - kadrowanie przy pomocy jCrop
Forum PHP.pl > Forum > Przedszkole
Archon816
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.
_Borys_
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.
Archon816
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!
_Borys_
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');
Archon816
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
matiit
Sprawdź czy przed <?php nie masz żadnej spacji/znaku nowej linii itd
Archon816
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);

?>
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.