http://weblogs.foxite.com/vfpimaging/archive/2007/06/03/3865.aspx
Autor: Cesar Ch.
Traducido por: Ana María Bisbé York
¿Ha notado que puede cambiar la extensión de un archivo de imagen a otros tipos de archivos de imagen, y Windows aun puede mostrar esas imágenes?
En efecto, cuando renombramos por ejemplo la imagen "YourPicture.Bmp" a "YourPicture.Jpg", todo el archivo permanece intacto, sólo la extensión de archivo es cambiada. Cuando Windows abre esa imagen, encuentra la información en la cabecera de la imagen, al principio del archivo, una firma específica que indica el tipo verdadero de imagen con la que está tratando.
Tore Bleken, de Noruega, ha creado una función muy sencilla y útil que busca cierta información específica en la cabecera del archivo. Él simplemente usó un editor hexadecimal, y examinó varios archivos. ¡Muchas gracias a Tore por el código y permitir publicarlo aquí!
FUNCTION FileType LPARAMETERS lcData LOCAL lcReturn,lcContents IF PCOUNT()=0 OR VARTYPE(lcData)#'C' lcReturn='' ELSE IF ADIR(laDummy,lcData)>0 && Archivo lcContents=FILETOSTR(lcData) ELSE && Variable de memoria lcContents=lcData ENDIF DO CASE CASE LEN(lcContents)<4 lcReturn='' CASE LEFT(lcContents,3)=CHR(0xFF)+CHR(0xD8)+CHR(0xFF) lcReturn='JPG' CASE LEFT(lcContents,3)='GIF' lcReturn='GIF' CASE SUBSTR(lcContents,42,3)='EMF' lcReturn='EMF' CASE LEFT(lcContents,4)=CHR(0xD7)+CHR(0xCD)+CHR(0xC6)+CHR(0x9A) lcReturn='WMF' CASE LEFT(lcContents,4)=CHR(0x4D)+CHR(0x4D)+CHR(0x00)+CHR(0x2A) lcReturn='TIF' CASE LEFT(lcContents,4)=CHR(0x89)+'PNG' lcReturn='PNG' CASE LEFT(lcContents,2)='BM' lcReturn='BMP' CASE LEFT(lcContents,3)='CWS' AND ASC(SUBSTR(lcContents,4,1))<16 lcReturn='SWF' CASE LEFT(lcContents,3)='FWS' AND ASC(SUBSTR(lcContents,4,1))<16 lcReturn='SWF' OTHERWISE lcReturn='' ENDCASE ENDIF RETURN lcReturn ENDFUNC
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.