Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][gd]
Forum PHP.pl > Forum > Przedszkole
-emes-
witam.

po raz kolejny - mam mała prośbę.

otóź pobieram obrazek:
  1. <?php
  2. $preparedImage = file_get_contents("../tmp/tmpPict");
  3. $preparedImage = addslashes($preparedImage);
  4. ?>


i w takiej formie wrzucam go do bazy (pole BLOB)

następnie w kolejnych skrypcie, pobieram tę wartość z bazy i chce ją edytować za pomoc metod biblioteki gd (tj np. imagecopyresampled()).

no i tu mi się pojawia problem - jak z takiego bloba zrobić resource pliku graficznego?

byłoby idealnie, gdyby się dało zrobić to np. tak:
  1. <?php
  2. //pobieranie danych z BLOBa
  3. $preparedImage = $result->thumbBody;
  4.  
  5. $image = createimagefromjpeg($preparedImage)
  6. ?>

ale zrobić tak się nie da. co zatem?

pomożcie...
kicaj
Bodajze musza byc zwrocone naglowki i plik zapisany na dysku, ale nie wiem czy mozna bezposrednio...
-emes-
no właśnie zrobiłem to z pośrednictwem zapisywania na dysku, ale nie za bardzo mi się to podoba i chcę to przerobić...

generalnie mój problem możnaby upościć do czegoś takiego:
  1. <?php
  2. $preparedImage = file_get_contents("../tmp/tmpPict");
  3. $preparedImage = addslashes($preparedImage);
  4. $preparedImage = questionmark.gif;
  5. $image = createimagefromjpeg($preparedImage)
  6. ?>

tylko co w miejscu tego questionmark.gif wstawić...
kicaj
funkcja imagecreatefromstring?

  1. <?php
  2. $preparedImage = file_get_contents("../tmp/tmpPict");
  3. $preparedImage = addslashes($preparedImage);
  4. $image = createimagefromstring($preparedImage); // automatycznie wykryje jaki typ pliku zostal pobrany
  5. ?>
-emes-
testowałem tę metodę już wczoraj no i głowę bym dał, że to nie działało.
pomyślałem sobie jednak - długi dzień wczoraj był, sprawdzę jeszcze raz - może już spałem gdy to sprawdzałem...

tak więc sprawdzam, no i... w zależności od miejsca cięcia na szyi, byłbym niższy o jakieś 22~27cm... a i tak do dwumetrowych kingkonów nie należe ;-)

dzięki
-emes-
odświeżę temat, bo mam kolejną sprawę.

otóż - wczytuję zdjęcie z pliku,
  1. <?php
  2. $image = imagecreatefromjpeg("test.jpg");
  3. ?>


oraz zmniejszam go do określonego wcześniej rozmiaru
  1. <?php
  2. $tmpImage=imagecreatetruecolor($finalX, $finalY);
  3. imagecopyresampled($tmpImage, $image, 0, 0, 0, 0, $finalX, $finalY, $imageX, $imageY);
  4. ?>

następnie zapisuję przeskalowane zdjęcie w bazie
  1. <?php
  2. $thumb->initializeThumbBodyFromModel($tmpImage);
  3. $thumbService->create($thumb);
  4. ?>

niestety to co mi się dodaje do bazy, to jakieś śmieci, z których nic nie da się potem zrobić...

gdy zaraz po przeskalowaniu zapiszę zdjęcie w katalogu tymczasowym, a następnie wczytam go z tego katalogu tymczasowego
  1. <?php
  2. imagejpeg($tmpImage, "../tmp/tmpPict", 100);
  3.  
  4. $preparedImage = file_get_contents("../tmp/tmpPict");
  5. $preparedImage = addslashes($preparedImage);
  6. ?>

i dopiero zapiszę go w bazie
  1. <?php
  2. $thumb->initializeThumbBodyFromModel($preparedImage);
  3. $thumbService->create($thumb);
  4. ?>

to działa ok, jednak nie chcę takie rozwiązania, ponieważ operacja zapisu i odczytu jest dosyć długa

zatem pytanie - co zrobić pomiędzy skalowaniem zdjęcia, a zapisywaniem go do bazy, żeby całościowo działać to zechciało??
Kicok
Spróbuj z użyciem buforowania wyjścia:

  1. <?php
  2.  
  3.  
  4.  
  5.  
  6. //
  7. $image = imagecreatefromjpeg( "test.jpg") ;
  8.  
  9. $tmpImage = imagecreatetruecolor( $finalX, $finalY );
  10. imagecopyresampled( $tmpImage, $image, 0, 0, 0, 0, $finalX, $finalY, $imageX, $imageY );
  11.  
  12. imagejpeg( $tmpImage, null, 100 );
  13.  
  14. imagedestroy( $image );
  15. imagedestroy( $tmpImage );
  16. //
  17.  
  18.  
  19. $content = ob_get_clean();
  20.  
  21. $thumb->initializeThumbBodyFromModel( addslashes( $content ) );
  22. $thumbService->create( $thumb );
  23.  
  24.  
  25. ?>
-emes-
z tym buforem, to jest pomysł tak dobry jak skuteczny - a skuteczny jest i to bardzo smile.gif
był to ostatni z pośród powód istnienia katalogu tmp tongue.gif
serdecznie dziękuję biggrin.gif
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.