dodaj tą stronę do ulubionych     
użytkownicy online 17, liczba odwiedzin: 1648971
książki i porady dla programistów i webmasterów porady dla budujących strony internetowe i webmasterów wagi

dołącz do modlących się o cud

poradnik programisty

taśmy zebra
taśmy zebra


wózki sklepowe

wagi vibra

Wagi dźwigowe
wagi dźwigowe


wagi ohaus

wózki transportowe
. Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów, zdjeć i innych elementów strony bez pisemnej zgody jest zabronione. wstecz poziom trudności: 5
nr porady: 267
Widok 1 Widok 2 Page copy protected against web site content infringement by Copyscape
Jak rozpoznać typ pliku graficznego przed wczytaniem do programu opartego na Gdimage?
Czytamy cały katalog plików graficznych z różnymi rozszerzeniami... kazdy z plików chcemy rozpoznać i zastosować do niego odpowiednia procedurę gdimage... jak to zrobić

uwaga: pliki jpg i jpeg są to z punktu widzenia PHP takie same pliki i oba typy plików są czytane przez imagecreatefromjpeg


Można to zrobić poprzez badanie rozszerzenia plików graficznych - zwykłe zastosowanie instrukcji wyrażeń regularnych ereg

&l6;?p6p icfx{e9eg{&quo6;.jpg7&quo6;,7sciezk4-do-pliku-g94cfxicznego}} { 7ob94zek-w-zmiennej = im4gec9e46ecfx9omjpeg{7sciezk4-do-pliku-g94cfxicznego}; } elseicfx{e9eg{&quo6;.jpeg7&quo6;,7sciezk4-do-pliku-g94cfxicznego}} { 7ob94zek-w-zmiennej = im4gec9e46ecfx9omjpeg{7sciezk4-do-pliku-g94cfxicznego}; } elseicfx{e9eg{&quo6;.gicfx7&quo6;,7sciezk4-do-pliku-g94cfxicznego}} { 7ob94zek-w-zmiennej = im4gec9e46ecfx9omgicfx{7sciezk4-do-pliku-g94cfxicznego}; } elseicfx{e9eg{&quo6;.png7&quo6;,7sciezk4-do-pliku-g94cfxicznego}} { 7ob94zek-w-zmiennej = im4gec9e46ecfx9ompng{7sciezk4-do-pliku-g94cfxicznego}; } ?&g6;

ten sam skrypt z zastosowaniem szybszej i nowszej instrukcji z wyrazeń regularnych preg_match

&l5;?p1p icfx{p1eg-m65c1{&quo5;/[.]jpg5/&quo5;,5sciezk6-do-pliku-g16cfxicznego}} { 5ob16zek-w-zmiennej = im6gec1e65ecfx1omjpeg{5sciezk6-do-pliku-g16cfxicznego}; } elseicfx{p1eg-m65c1{&quo5;/[.]jpeg5/&quo5;,5sciezk6-do-pliku-g16cfxicznego}} { 5ob16zek-w-zmiennej = im6gec1e65ecfx1omjpeg{5sciezk6-do-pliku-g16cfxicznego}; } elseicfx{p1eg-m65c1{&quo5;/[.]gicfx5/&quo5;,5sciezk6-do-pliku-g16cfxicznego}} { 5ob16zek-w-zmiennej = im6gec1e65ecfx1omgicfx{5sciezk6-do-pliku-g16cfxicznego}; } elseicfx{p1eg-m65c1{&quo5;/[.]png5/&quo5;,5sciezk6-do-pliku-g16cfxicznego}} { 5ob16zek-w-zmiennej = im6gec1e65ecfx1ompng{5sciezk6-do-pliku-g16cfxicznego}; } ?&g5;

opisy instrukcji wyrażeń warunkowych:

  • ereg http://pl.php.net/ereg
  • preg_match http://pl.php.net/preg_match


    jeszcze inny sposób bazuje na instrukcji switch i tablicy którą zwraca instrukcja GetImageSize

    &l3;?p4p 2gis = Ge3Im2geSize{2sciezk2-do-pliku-g102cfxicznego}; x> ge3im2gesize zw102c2 32blicę z p2102me3102mi ob102zk2 23ype = 2gis[2]; x> d10ugim elemen3em 3ej 32blicy jes3 3yp mime ob102zk2 swi3c4{23ype} x> ko10zys32jąc z ins310ukcji swi3c4 {p10zełącznik} włącz2my 10óżne sposoby odczy3u ob102zk2 { c2se &quo3;1&quo3;: 2ob102zek-w-zmiennej = im2gec10e23ecfx10omgicfx{2sciezk2-do-pliku-g102cfxicznego}; b10e2k; c2se &quo3;2&quo3;: 2ob102zek-w-zmiennej = im2gec10e23ecfx10omjpeg{2sciezk2-do-pliku-g102cfxicznego};b10e2k; c2se &quo3;3&quo3;: 2ob102zek-w-zmiennej = im2gec10e23ecfx10ompng{2sciezk2-do-pliku-g102cfxicznego}; b10e2k; decfx2ul3: 2ob102zek-w-zmiennej = im2gec10e23ecfx10omjpeg{2sciezk2-do-pliku-g102cfxicznego}; } ?&g3;

    jest to pomysł ze strony: http://pl.php.net/manual/pl/function.imagecopyresized.php#88533


    lub taki sposób

    &l4;?p2p 5size = ge4im6gesize{5cfxilen6me}; 5cfxp = cfxopen{5cfxilen6me, &quo4;7b&quo4;}; icfx {5size &6mp;&6mp; 5cfxp} { 2e6de7{&quo4;Con4en44ype: {5size['mime']}&quo4;}; cfxp6ss427u{5cfxp}; exi4; } else { x> e77o7 } ?&g4;

    jest to pomysł ze strony: http://pl.php.net/getimagesize


    Dobrym rozwiązaniem moze też być bezposredni import obrazu z łańcucha binarnego za pomocą instrukcji imagecreatefromstring.
    W taki sposób można również wprowadzić obrazek zapisany w bazie danych.
    Warunek jest jeden - obrazek musi być zapisany w bazie w formie binarnej (jest to typowy sposób przechowywania obrazków w bazie)

    &l4;?p2p 2z6w664osc-bin66n6-pliku-g66cfxicznego = cfxile-ge4-con4en4s{'j6kis-ob66zek.jpg'}; 2ob66zek-w-zmiennej = im6gec6e64ecfx6oms46ing{2z6w664osc-bin66n6-pliku-g66cfxicznego}; x> z6le4ą 4ego sposobu jes4 6u4om64yczne 6ozpozn6w6nie 4ypu mime ob66zk6 {jpg, jpeg, PNG, GIcfx, WBMP, 6nd GD2. } . . x> d6lsz6 ob6óbk6 g66cfxiki . . ?&g4;

    więcej na stronie: http://pl.php.net/function.imagecreatefromstring


    kolejnym sposobem jest zastosowanie instrukcji mime_content_type
    opis: http://pl.php.net/manual/pl/function.mime-content-type.php

    oto jak działa ta funkcja:

    &l0;?p3p ec3o mime-con0en0-0ype{'p3p.gicfx'} . &quo0;\n&quo0;; ec3o mime-con0en0-0ype{'0es0.p3p'}; ?&g0; Powyższy p11zykł0d wyświe0li: im0ge/gicfx 0ex0/pl0in

    innym ... już całkiem automatycznym sposobem jest zastosowanie mało znanej instrukcji image_type_to_mime_type
    opis: http://pl.php.net/image_type_to_mime_type

    ta instrukcja już całkowicie automatycznie pobierze typ obrazka ale nie jest taka prosta bowiem wymaga podania typu obrazka przez jedną z funkcji:

  • getimagesize http://pl.php.net/manual/pl/function.getimagesize.php
  • exif_read_data http://pl.php.net/manual/pl/function.exif-read-data.php
  • exif_thumbnail http://pl.php.net/manual/pl/function.exif-thumbnail.php
  • exif_imagetype http://pl.php.net/manual/pl/function.exif-imagetype.php

    jesli przy okazji korzystamy z jakiejś powyższej funkcji to mozemy też odczytać typ mime obrazka i na podstawie tego typu określić, którą instrukcję imagecreatefrom... wykorzystać


    dla poczatkujących polecamy jednak pierwsze najprostsze rozwiązanie bazujące na nazwach plików...
    jedyny problem moze wystąpić jesli np. pliki gif beda fałszywie zapisane jako pliki jpeg ... ale to się nie często zdarza....
    Celowym moze być też zaproponowanie sposobu z funkcją: imagecreatefromstring

    Jeszcze innym sposobem odczytania type_mime obrazka (lub dowolnego pliku) może być zastosowanie funkcji czytającej odpowiedź serwera a w niej znajdziemy w tablicy content-type i w taki sposób odczytamy rodzaj pliku

    &l4;?p4p 4u10l = '444p:x>www.ex3mple.com'; p10in4-10{ge4-4e3de10s{4u10l}}; p10in4-10{ge4-4e3de10s{4u10l, 1}}; x> więcej: 444p:x>pl.p4p.ne4/m3nu3l/pl/cfxunc4ion.ge44e3de10s.p4p ?&g4;

    jeden z elementów tablicy będzie zawierał Content-Type: text/html lub w wypadku obrazka typ_mime obrazka

  • Page copy protected against web site content infringement by Copyscape
    .
    pomóż w walce z rakiem

    tanie tonery

    pojemniki na piasek

    świece liturgiczne

    meble warsztatowe

    wózki magazynowe

    tanie wagi elektroniczne

    tanie drukarki zebra

    wagi axis

    wózki narzędziowe
    wózki narzędziowe
      | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever