Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [funkcja] Obrazek bez... obrazka
Shido
post 25.06.2012, 21:56:54
Post #1





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Jakiś czas temu na potrzeby mailera napisałem poniższą funkcję.
Co robi?
W skrócie, przerabia obrazek na ciąg znaków który można bez problemowo wyświetlić w formie obrazka.
Zastosowanie.
Osobiście skrypt wykorzystuje przy wysyłaniu obrazków w mailach - dzięki temu omijamy blokowanie obrazków z zewnętrznego źródła w klientach poczty. Ogólnie zastosować można w każdym przypadku gdy mamy do czynienia z obrazkami. Po zastosowaniu jakiejś bazy danych, możemy np. stworzyć galerię, nie mając na serwerze ani jednego obrazka - cóż za oszczędność miejsca biggrin.gif
Zabezpieczenia
Brak. Funkcja nie jest zabezpieczona z jednego powodu, obsługiwana jest jedynie przeze mnie, obrazki są z pewnego źródła. Natomiast walidacja czy to na pewno obrazek odbywa się wcześniej. ( Walidację np. po rozszerzeniu można wykonać poprzez zmienną $roz która przechowuje rozszerzenie )
Wykorzystywanie
Skoro to tu dałem, oznacza że wykorzystywać można to dowolnie, jednak proszę o pozostawienie komentarza w kodzie oraz ewentualnie jakieś ciepłe słowo w temacie tongue.gif

  1. function imag($plik)
  2. {
  3. /*
  4.   ====================================================
  5.   || imag(); by Shido ||
  6.   || by wyświetlić np: ||
  7.   || echo('<img src="'.imag("lokalizacja").'" />'); ||
  8.   ====================================================
  9.   */
  10. if(preg_match("/http:\/\//i", $plik))
  11. {
  12. $roz = explode('.', $plik);
  13. $roz = end($roz);
  14. $c = curl_init($plik);
  15. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  16. $data = curl_exec($c);
  17. }
  18. else
  19. {
  20. $fileatt = $plik;
  21. $roz = explode('.', $fileatt);
  22. $roz = end($roz);
  23. $file = fopen($fileatt,'rb');
  24. $data = fread($file,filesize($fileatt));
  25. fclose($file);
  26. }
  27. return ('data:image/'.$roz.';base64,'.base64_encode($data).'');
  28. }


PS.
Jeżeli macie jakieś sugestie, z chęcią wysłucham.

Ten post edytował Shido 25.06.2012, 21:59:09


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
gitbejbe
post 14.06.2013, 13:13:16
Post #2





Grupa: Zarejestrowani
Postów: 399
Pomógł: 41
Dołączył: 27.08.2012

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


odgrzewam kotleta sprzed roku odpisując na ten post, ale co tam

base64 to tak ch...ciulowe rozwiązanie do tego typu rzeczy, że trudno znaleźć gorsze..

Po 1, kodowanie w ten sposób obrazków do celów wysłania emaili - głupota. Szukałem kiedyś sposoby aby obejść blokowanie obrazków przez klientów pocztowych i też wpadł mi w ręce ten base64. Długość zapisu tego kodowania jest zależna od rozmiaru kodowanej grafiki. ciąg znaków zawsze jest tak zajebiście długi, że serwery pocztowe w większości przypadków odrazu taką wiadomość odsyłają do spamu albo całkowicie blokują. Nie ma rozwiązania na blokowanie obrazków w emailach, bo jakby była to każda reklama którą dostaje od większych firm zawsze miałaby wyświetlone obrazki.

Co do baz danych. nie wyobrażam sobie 10 000 rekordów z obrazkami zapisanymi w base64, nie mówiąc już o 100 000 czy mln. Jest to tak niewydajne rozwiązanie, że poprostu się tego nie używa
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.06.2018 - 00:23