Mam w bazie danych obrazki w polach BLOB i potrzebuje zapisać te obrazki do plików przez PHP. Jak to zrobić? Wiem, że są to albo bitmapy albo jpegi. Próbowałem normalnym zapisem do pliku i nie działa, tzn. zapisują się, ale nie da się ich wyświetlić (plik zniszczony, uszkodzony lub za duży).
Użyj biblioteki GD, może pomoże. U mnie po wyświetlaniu pliku graficznego i zapisaniu działał poprawnie. Odnośnie tematu to kto dziś trzyma pliki w bazie SQL ?
i wtedy powinno działać już w ten sposób, jak pokazałeś, o ile obrazek został do bazy poprawnie zapisany.
Może być też to string będący wynikiem kodowania przy użyciu base64. Wtedy najpierw trzeba użyć base64_decode.
Z biblioteki GD interesuje Cię, na dobry początek, funkcja imagecreatefromstring(). Podany na podlinkowanej stronie przykład wyświetla dany obrazek, aby go zapisać do pliku musisz do imagepng()/imagejpeg() dopisać drugi parametr z jego nazwą.
Nie wygląda to ani na zakodowane, ani na string, z resztą próbowałem z tym from string i z dekodowaniem i wciąż ten sam problem. Obrazki zostały dobrze zapisane, bo są używane w aplikacji napisanej w Accessie, który wykorzystuje właśnie mysqla oraz są próby przeniesienia tej aplikacji na Visual Basica i tam z tego co wiem też działają.
EDIT: Dodam, że rozmiary “obrazków”, które się tworzą na ftpie zgadzają się z tymi, które są w bazie.
To co wkleiłeś się średnio nadaje, trudno coś kombinować na podstawie tego. Mógłbyś podzielić się takim przykładowym “obrazkiem”, wrzucić na dowolny hosting plików? Być może nie wszystkie bajty zapisane w bazie są obrazkiem, a na przykład jakimiś danymi, które trzeba pominąć, a są potrzebne do czegoś innego.
Ewentualnie mógłbyś sprawdzić/podać jak ten obrazek, w tej aplikacji która już jest i działa, jest pobierany i wyświetlany.
Z takich pomysłów, które mam jeszcze to może w czasie odczytu używane jest inne kodowanie, niż jest baza?