|
dodaj tą stronę do ulubionych
użytkownicy online 17, liczba odwiedzin: 1648971
| |||||||||
![]() | |||||||||
|
. |
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
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: http://pl.php.net/ereg
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: 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: Dobrym rozwiązaniem moze też być bezposredni import obrazu z łańcucha binarnego za pomocą instrukcji imagecreatefromstring.
&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: kolejnym sposobem jest zastosowanie instrukcji mime_content_type
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
ta instrukcja już całkowicie automatycznie pobierze typ obrazka ale nie jest taka prosta bowiem wymaga podania typu obrazka przez jedną z funkcji: http://pl.php.net/manual/pl/function.getimagesize.php
http://pl.php.net/manual/pl/function.exif-read-data.php
http://pl.php.net/manual/pl/function.exif-thumbnail.php
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...
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
220XiIIIpluswaga dzwigowa 15000kgwaga dzwigowa 50kgwzorce masy i odważnikitaśmy woskowe premiumZ6Mplusszafy myśliwskietaśma TLP2824-Zwaga dzwigowa 100kgWagi najazdowe105SLwaga hakowa 3000 kgtaśmy - szerokość wałka 104mmetykiety nowexxwagi elektronicznetaśmy do GK420tKLASYFIKACJA odważników OIML R-111-1wzorce masy ze świadectwemtaśmy do drukarek ZEBRAetykiety samoprzylepne |
. | ||||||
| | 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 | |||||||||