SlideShare une entreprise Scribd logo
1  sur  4
Télécharger pour lire hors ligne
Funciones de compresión


Funciones de compresión
                                        Herramientas de compresión
zlib
                                           Existen varias herramientas para compresión de ficheros. Las más populares son las
                                        funciones de la biblioteca bzip2 de Julian Seward que generan ficheros comprimidos que se
Algunas de esas funciones son
estas:                                  reconocen por su extensión (bz2) y la función de zlib de Jean-loup Gailly y Mark Adler para
                                        leer y grabar archivos comprimidos con extensión gz.
$f=gzopen(fich,mod, path)
                                           En esta página veremos el uso de la segunda de las opciones. Empezaremos omprobando
Abre el fichero identificado por el     en info.php que la opción está activada. Deberemos ver algo como esto:
parámetro fich y lo hace en modo
especificado en el parámetro modo
r o w según se trate de modo
lectura o escritura.

Cuando se trata del modo de
escritura el parámetro w debe ir
seguido de un número
comprendido entre cero y nueve
que especifica el grado de
compresión pretendido.

El parámetro path es opcional y           En la versión de PHP que estamos utilizando esta opción se activa por defecto y no es
puede contener un valor lógico          necesario modificar ningún parámetro en php.ini.
(cero ó uno). Cuando el valor de
este parámetro es 1 permite                Sólo en el caso de utilizar versiones anteriores a PHP 4.2.3 sería necesario modificar el
incluir en el parámetro fich la ruta    fichero php.ini descomentando la línea que dice: extension=php_zlib.dll.
del directorio o subdirectorio
que alberga el fichero que
tratamos de abrir                       Ejemplo de compresión y lectura de un fichero
Si se incluye una ruta sin
                                     En este ejemplo trataremos de utilizar las funciones de compresión comentadas al
especificar el valor 1 en el
parámetro path aparecerá un error. margen. Si observas las formas de apertura de los ficheros verás que son similares a las
                                        utilizadas para la gestión de ficheros. Los modos de apertura para escritura son: "w0" a
gzclose($f)                             "w9" siendo los valores de cero a nueve los indicadores de los niveles de compresión. Para
                                        lectura debe usarse el modo "r" sin indicar ningún nivel de compresión.
Cierra el fichero asociado al
identificador de recurso $f. Esta
función devuelve TRUE en caso de         <?
éxito o FALSE si se produjera un         # asignamos un nombre al fichero con extensión "gz"
error.                                      $fichero ='prueba.gz';
                                         # abrimos el fichero en modo escritura (w)
gzeof($f)                                # con el nivel máximo de compresión (9)
                                            $f=gzopen($fichero,"w9",0);
Esta función devuelve 1 (TRUE) en
el caso de que el puntero apunte al         $cadena="Este es el primer bloque de texto que hemos
final del fichero abierto e                              introducido en el fichero comprimido. ";
identificado mediante $f.                   $cadena .="Añadimos este segundo bloque";
También devuelve TRUE en caso               echo "<i>Esta es la cadena inicial:</i> ".$cadena."<br>";
de error.                                # escribimos (comprimida) la cadena en el fichero
Si el fichero estuviera abierto y el
puntero apunta a una posición
distinta del final del fichero           gzwrite($f,$cadena); # cerramos el fichero gzclose($f); #abrimos el fichero en modo
devolverá FALSE.                         lectura $f=gzopen($fichero,"r"); echo "<i>Estos son los tres primeros caracteres de la
                                         cadena:</i> "; # escribimos los tres primeros caracteres, el puntero (por defecto) #
gzseek($f,desplaza)                      apunta al comienzo de la cadena echo gzread($f, 3)."<br>"; # desplazamos el puntero
                                         hasta el carácter nº 8 gzseek($f,8); echo "<i>Estos son los seis caracteres siguientes al
Desplaza -dentro del fichero             octavo:</i> "; # escribimos seis caracteres a partir del octavo echo gzread($f,
identificado por $f- el puntero -a
                                         6)."<br>"; echo "<i>Ahora el puntero está en:</i> "; # buscamos la posición actual de
partir de su posición actual- la
cantidad de bytes indicados en el
                                         puntero echo gztell($f)."<br>"; # movemos el puntero hasta el comienzo del fichero
parámetro desplaza                       gzrewind($f); echo "<i>Estos son los diez primeros caracteres de la cadena:</i> "; #
                                         escribimos los diez primeros caracteres del fichero echo gzread($f, 10)."<br>"; #
gztell($f)                               volvemos el puntero al comienzo del fichero gzrewind($f); echo "<i>Escribimos el fichero
                                         completo:</i> "; # con gzpasthru escribimos el fichero completo # el puntero está al
Devuelve la posición actual del          principio porque alli lo ha situado gzrewind # no necesitamos utilizar "echo" ni "print" ya
puntero.
                                         que gzpassthru # escribe directamente el contenido del fichero gzpassthru($f); #
gzrewind($f)                             tenemos que volver a abrir el fichero ya que gzpassthru # se encargó de cerrarlo después
                                         de leerlo $f=gzopen($fichero,"r"); echo "<br><i>Aquí estará todo el fichero:</i> ";
Coloca el puntero al comienzo del        gzpassthru ($f); # la función readgzfile abre el fichero, imprime su contenido y lo cierra
fichero                                  echo "<br><i>Aqui se imprime la cadena completa usando readgzfile</i>: <br>";
                                         readgzfile($fichero); /* con gzfile también se abre el fichero, pero ahora el contenido no
gzread($f, longitud)
                                         se presenta directamente. Es recogido en un array. Para visualizarlo debemos imprimir el
Devuelve una cadena -después de          primer elemento del array. */ $z=gzfile($fichero); echo "<br><i>Este es el primer
descomprimida- de longitud igual a       elemento (0) del array generado por gzfile</i>: ".$z[0]; # gzfile cierra el fichero. # No
la indicada en el parámetro              podemos poner gzclose porque nos daría error ?>
longitud. La lectura comienza en
la posición actual del puntero y                                            comprime1.php
acaba cuando la longitud de la
cadena leida y descomprimida sea
igual al valor del parámetro            Utilizando un directorio distinto
longitud o cuando se haya
alcanzado el final del fichero.
                                           El ejemplo anterior está desarrollado para el supuesto que el script y el fichero comprimido
gzpassthru ($f)                         estén en el mismo directorio.

Esta función escribe en la salida          Si quieres utilizar estas funciones utilizando ficheros alojados en un directorio distinto, solo
(no necesita la función echo) el        tendrás que recordar que algunas funciones deben incluir el parámetro complementario 1.
contenido del fichero desde la          Estos son las modificaciones que deberías efectuar:
posición actual del puntero hasta
el final del fichero. Como es lógico,
si estuviera precedida de                   s   La variable que recoge el nombre del fichero debe incluir el path, por ejemplo:
gzrewind escribiría el fichero                  $fichero ='/subdirectorio/prueba.gz'
completo.
s   La función gzopen debe incluir el tercer parámetro (path) con valor 1, por ejemplo:
                                               $f=gzopen($fichero,"r",1);
    ¡Cuidado!
                                           s   También las funciones gzfile y readgzfile -que abren automáticamente el fichero-
   La función gzpassthru cierra                deberán incluir ese valor 1 como parámetro añadido. Por ejemplo: readgzfile
   automáticamente el fichero                  ($fichero,1) ó $z=gzfile($fichero,1)
   después de escribir su
   contenido. Si pones gzclose
   después de esta función te           Elección del grado óptimo de compresión
   dará error y si quieres seguir
   utilizando el fichero tendrás
                                           Puede parecer -a primera vista- que la condición óptima de compresión sería elegir el
   que volver a abrirlo con la
                                        nivel 9 y eso es cierto si tomamos únicamente en consideración el tamaño final del fichero
   función gzopen.
                                        comprimido. Sin embargo no existe una relación lineal entre reducción de tamaño/nivel de
                                        compresión. Sin que pueda considerarse ninguna referencia exacta -la compresión alcanzable
gzwrite($f, cadena, long)               depende del contenido del fichero y en consecuencia no puede establecerse una relación
                                        funcional puede comprobarse experimentalmente que -aparentemente- a partir del grado 2 la
Esta función escribe en el fichero      reducción de tamaño del fichero es mínima y que cuando se aumenta el grado de compresión
comprimido que se identifica por        a niveles máximos (tratándose de ficheros de un cierto tamaño) el tiempo de ejecución
$f la cadena contenida en el
                                        aumenta sustancialmente como consecuencia de la reiteración de la ejecución de los
parámetro cadena.
                                        algoritmos de compresión.
Opcionalmente puede llevar el
tercer parámetro (longitud) en
cuyo caso solo escribirá los
                                        Compresión de cadenas
primeros longitud bytes de la
cadena. Si el parámetro longitud          En este ejemplo utilizamos las tres funciones de compresión de cadenas así como las
existe y es mayor que la longitud       opciones de descompresión y lectura de cada una de ellas.
de la cadena, insertará la cadena
completa.
                                         <?
gzputs($f, cadena, long)                 # creamos una cadena de ejemplo
                                            $cadena="Esta es la cadena a comprimir. Intentaremos que sea larga
Esta función es idéntica a gzwrite.           porque parece que si la hacemos muy corta en vez de reducirse
readgzfile($fichero,path)                     su tamaño parece que aumenta. Y como sigue siendo enormemente
                                              grande la cadena comprimida intentaremos hacerla aun mayor
Esta función abre de forma                    a ver que pasa ";
automática el fichero indicado           # comprimimos con la función gzcompress
como parámetro fichero, además              $c=gzcompress($cadena,9);
lo lee y lo escribe de forma                   echo "<br>".$c;
automática sin necesidad de usar         # descomprimimos con la función gzcompress
echo ni ninguna otra función de             $dc=gzuncompress($c);
salida.
                                               echo "<br>".$dc."<br>";
Si el fichero no está en el mismo        # ahora utilizamos la función gzencode
directorio que el script -además de         $c1=gzencode($cadena,9,FORCE_GZIP);
incluir la ruta en la cadena fichero-       echo "<br>".$c1."<br>";
es necesario añadir el segundo           /* el resultado lo guardamos en un fichero con extensión gz
parámetro -path- con valor 1.             pero abierto en modo "normal", es decir escribiendo
                                          dentro del fichero la cadena "tal cual" fue devuelta
Comprimiendo cadenas                      por gzencode*/
                                            $f=fopen("pepe.gz","w");
                                            fwrite($f,$c1);
Las funciones anteriores permiten
                                            fclose($f);
la creación, lectura y modificación
de ficheros comprimidos                  # abrimos el fichero anterior utilizando las funciones
                                         # de lectura de fichero comprimidos
Sin embargo, existen otras                  $f=gzopen("pepe.gz","r");
funciones PHP que permiten                  readgzfile("pepe.gz");
comprimir cadenas. Aquí tienes              gzclose($f);
algunas de ellas.                        # borramos el fichero una vez leido
                                            unlink("pepe.gz");
gzcompress(cadena, nivel)
                                         # otra opción de compresión de cadenas utilizando la función
Esta función devuelve una cadena         # gzdeflate
comprimida a partir de una                  $c2= gzdeflate($cadena,9);
original especificada en el parámet           echo "<br><BR>".$c2;
´ro cadena. El nivel de                  # con la función gzinflate podemos descomprimir la cadena
compresión (valores entre 0 y 9)         # comprimida generada por gzdeflate
se especifica en el parámetro nivel.               $dc2=gzinflate($c2);
                                               echo "<br>".$dc2;
Las cadenas resultantes de esta
función pueden descomprimirse            ?>
aplicando la función
gzuncompress que te comento
                                                                          comprime2.php
más abajo.

gzdeflate(cadena, nivel)
                                        Economizando espacio en el servidor
Se comporta de forma idéntica a la
función anterior. La única salvedad
parece ser que utiliza un algoritmo       Las opciones de compresión pueden permitirnos un cierto ahorro de espacio de servidor.
de compresión distinto.                 Las páginas HTML podrían almacenarse comprimidas y ser llamadas a través de un script de
                                        descompresión que permita visualizarlas. En este ejemplo se efectúa la compresión de una
Las cadenas resultantes de esta         página web (una de las páginas de estos materiales guardada en formato HTML) cuyo
función también pueden                  tamaño original es de 29.015 bytes. El fichero comprimido resultante ocupa 9.886 bytes.
descomprimirse aplicando la             Como verás, el fichero se reduce a poco más del 30% del original.
función gzdeflate.

gzencode(cad, niv, opc)                  <?
                                         # Creamos una variable "vacia"
Esta función devuelve la cadena          $cadena="";
cad comprimida con el nivel
                                         # Abrimos el fichero en modo lectura (r)
especificado en niv y permite dos
                                         $f1=fopen("prueba.html","r");
opciones de compresión:
FORCE_GZIP ó                             /* hacemos un bucle para leer el fichero
FORCE_DEFLATE que se pueden                 hasta encontrar el final (feof) y vamos recogiendo
especificarse como tercer                   el contenido en la variable */
parámetro (opc) sin encerrar             while (!feof($f1)) {
entre comillas.                               $cadena .= fgets($f1, 1024);
}
El valor por defecto (cuando no se      /*comprimimos la cadena con gzencode
especifica el parámetro opción) es
                                           con lo cual la propia función añade los "encabezados"
FORCE_GZIP
                                           de formato gzip*/
                                        $c1=gzencode($cadena,3,FORCE_GZIP);
Descomprimiendo cadenas                 /* abrimos un nuevo fichero modo escritura (w)
                                        con "fopen", es decir como un fichero normal con extensión GZ */
gzuncompress(cadena)                     $f=fopen("prueba.html.gz","w");
                                        /* escribimos la cadena "tal cual"
Con esta función se obtiene una            en este fichero */
cadena -descomprimida- a partir            fwrite($f,$c1);
de la cadena comprimida indicada        # cerramos el fichero comprimido
en el parámetro cadena- siempre
                                           fclose($f);
que esta hubiera sido comprimida
                                           echo "La compresión ha terminado";
usando la función gzcompress
                                        ?>
gzinflate(cadena)

Funciona igual que la anterior. La                                       comprime3.php
única diferencia es que esta
descomprime las cadenas que han          El fichero comprimido mediante el script anterior no puede ser visualizado directamente.
sido comprimidas con gzdeflate         Requiere ser descomprimido antes de ser enviado al navegador. Y eso podría hacerse
                                       mediante un script como este:
Funciones para
buferización de salidas                  <?
                                        #abrimos el fichero comprimido con "gzopen"
ob_start()                               $f=gzopen("prueba.html.gz","r");
                                         /* leemos el contenido completo
Esta función activa la buferización        en forma transparente ya que readgzfile descomprime
de las salidas generadas por el            la salida*/
script de PHP a partir de su
                                           readgzfile("prueba.html.gz");
activación.
                                           # cerramos el fichero
Dicho de otra forma, impide que            gzclose($f);
las salidas generadas por el script     ?>
se envíen al cliente y por tanto no
serán visualizadas en el
navegador. A partir del momento                                          Visualizar fichero
de activar esa buferización, todas                                       comprimido
las salidas generadas se
almacenan en una variable
específica llamada:                    Economizando tiempo de transferencia
ob_get_contents()

ob_end_clean()                           No solo se puede economizar espacio en el servidor. También es posible enviar
                                       comprimidas -desde el servidor hasta el cliente- las páginas web.
Esta función desactiva la
buferización iniciada por ob_start        En ese caso, será el propio navegador el que interprete la información comprimida y la
y borra los contenidos de la           presente de una manera transparente. Lo que habremos ahorrado habrá sido tiempo de
variable ob_get_contents()             transferencia pero, igual que ocurría en el comentario anterior, esa reducción del volumen de
ob_clean()                             información a transferir afecta únicamente al contenido de la página y no a otros elementos
                                       que puede incluir, tales como imágenes, etcétera.
Esta función vacía el buffer de
salida pero sin desactivar la          Este es un ejemplo de un script que comprime una página web y la envía comprimida al
bufferización. Las salidas             cliente.
posteriores a esta función
seguirían siendo recogidas en el
buffer.
                                        <?
                                        /* activamos la bufferización de la salida
                                         para que no se presenten los resultados del script
Cabeceras para transferir                directamente en la página
información comprimida                   ¡¡Cuidado con no dejar lineas en blanco delante del script
                                         ya que vamos a insertar luego Headers!! */
Cuando un servidor recibe una           ob_start();
petición de una página web el           # abrimos y leemos el fichero html
navegador del cliente siempre           $f1=fopen("prueba.html","r");
envía información sobre su              fpassthru($f1);
disposición a aceptar diferentes        # recogemos el contenido del buffer en la variable $cadena
tipos de contenidos.                    $cadena = ob_get_contents();
Una de las informaciones que            # comprimimos la cadea con gzencode
suelen recibirse con la petición del    # para que incluya los encabezados "gzip"
navegador se refiere a su                $cd=gzencode($cadena,3,FORCE_GZIP);
capacidad para aceptar contenidos       # desactivamos la "buferización"
codificados y esto suelen hacerlo        # y borramos el contenido del buffer
mediante el envio de una cabecera       ob_end_clean();
que diría algo similar a esto:          # insertamos la cabeceras
Accept-Encoding:gzip,deflate o           # indicando el tipo de contenido y el tamaño
Accept-Encoding: gzip.                          Header('Content-Encoding: gzip');
Esta posibilidad es una
                                                Header('Content-Length: ' . strlen($cd));;
característica común a todas las        # presentamos el contenido (cadena comprimida) que será
versiones modernas de los               # "traducido" automáticamente por el navegador
navegadores (es posible que              echo $cd;
algunas versiones antiguas no           ?>
acepten esta codificación) y
bastará con se incluya en la
respuesta (el documento                                                  Ejecutar script
transferido por el servidor al
cliente) la cabecera:                      El ejemplo anterior comprimía el contenido del fichero antes de enviarlo. En este que
Header('Content-Encoding: gzip')       incluimos a continuación partimos del supuesto de que la página ya está comprimida en el
para que el navegador sepa que la      servidor. Por tanto, tendremos que leer el fichero comprimido y enviarlo, de igual forma, al
información llegará codificada y
                                       cliente.
que debe activar -de forma
automática- sus mecanismos de
traducción de ese tipo de               <?
contenidos.                             ob_start();
                                        /* En este caso abrimos el fichero con "gzopen"
ya que se trata de un fichero comprimido
Algunas limitaciones                  # todo lo demás es idéntico al ejemplo anterior*/
                                      $f1=gzopen("prueba.html.gz","r");
En todos estos ejemplos hemos         gzpassthru($f1);
dado por supuesto que los             $cadena = ob_get_contents();
navegadores de los clientes            $cd=gzencode($cadena,3,FORCE_GZIP);
aceptan la codificación gzip,          ob_end_clean();
pero es evidente que si eso no                Header('Content-Encoding: gzip');
ocurriera la página se visualizaría           Header('Content-Length: ' . strlen($cd));
erróneamente.
                                       echo $cd;
                                      ?>

    Ejercicio nº 30                                              Ejecutar script
   Escribe un script que guarde
   en un fichero comprimido la                 Anterior                    Indice         Siguiente
   imagen aviones4.jpg que
   tienes en el directorio images.

   Crea un segundo script que
   permita visualizarla en el
   navegador y evalúa la
   economía de espacio que
   aporta la compresión de este
   tipo de archivos.

Contenu connexe

Tendances (16)

Ficheros Php
Ficheros PhpFicheros Php
Ficheros Php
 
Bash Tips Tricks Campus
Bash Tips Tricks CampusBash Tips Tricks Campus
Bash Tips Tricks Campus
 
Manejo de archivos
Manejo de archivosManejo de archivos
Manejo de archivos
 
ejercicios1so
ejercicios1soejercicios1so
ejercicios1so
 
Linux ud3 - redireccionamiento y tuberias
Linux   ud3 - redireccionamiento y tuberiasLinux   ud3 - redireccionamiento y tuberias
Linux ud3 - redireccionamiento y tuberias
 
Redirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicosRedirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicos
 
Tuberías (PIPES). EN GNU-LINUX-CENTOS ::: http://leymebamba.com
Tuberías (PIPES).  EN GNU-LINUX-CENTOS  ::: http://leymebamba.comTuberías (PIPES).  EN GNU-LINUX-CENTOS  ::: http://leymebamba.com
Tuberías (PIPES). EN GNU-LINUX-CENTOS ::: http://leymebamba.com
 
Curso batch
Curso batchCurso batch
Curso batch
 
Ejercicios de visual
Ejercicios de visualEjercicios de visual
Ejercicios de visual
 
Unix 1314 test
Unix 1314 testUnix 1314 test
Unix 1314 test
 
Slideshare
SlideshareSlideshare
Slideshare
 
FICHEROS
FICHEROSFICHEROS
FICHEROS
 
Comandos de ubuntu
Comandos de ubuntuComandos de ubuntu
Comandos de ubuntu
 
Flex y Byson
Flex y BysonFlex y Byson
Flex y Byson
 
Fichero c y c++
Fichero c y c++Fichero c y c++
Fichero c y c++
 
mejorando con php
mejorando con phpmejorando con php
mejorando con php
 

En vedette

Itinerario De La Visita Cultural A MéRida
Itinerario De La Visita Cultural A MéRidaItinerario De La Visita Cultural A MéRida
Itinerario De La Visita Cultural A MéRidajoseignaciooo
 
T.5
T.5T.5
T.5ana
 
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden C
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden CResistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden C
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden Cguest16f7c29
 
04. Procesador De Textos. Ayuda De Open Office
04. Procesador De Textos. Ayuda De Open Office04. Procesador De Textos. Ayuda De Open Office
04. Procesador De Textos. Ayuda De Open OfficeJosé M. Padilla
 
El+Anclaje+De+La+LegislacióN+Escolar
El+Anclaje+De+La+LegislacióN+EscolarEl+Anclaje+De+La+LegislacióN+Escolar
El+Anclaje+De+La+LegislacióN+EscolarSITRAED
 
Tapas Revistas revistagradería.co
Tapas Revistas revistagradería.coTapas Revistas revistagradería.co
Tapas Revistas revistagradería.coSamPinilla
 
Psp de controlstore
Psp de controlstorePsp de controlstore
Psp de controlstoreoskrkintana
 
Estructura Y Mecanismos De Seguimiento Del Pnde
Estructura Y Mecanismos De Seguimiento Del PndeEstructura Y Mecanismos De Seguimiento Del Pnde
Estructura Y Mecanismos De Seguimiento Del PndeDIRECTIVO DOCENTE
 
PresentacióN Roel
PresentacióN RoelPresentacióN Roel
PresentacióN RoelA Fraga
 
Cuando Los Padres Envejecen
Cuando Los Padres EnvejecenCuando Los Padres Envejecen
Cuando Los Padres EnvejecenFabricio
 
Jean Jacques Rousseau Terminadas Solo Tiene Biografia , Legado Literario
Jean Jacques Rousseau   Terminadas Solo Tiene Biografia , Legado LiterarioJean Jacques Rousseau   Terminadas Solo Tiene Biografia , Legado Literario
Jean Jacques Rousseau Terminadas Solo Tiene Biografia , Legado Literarioguest83c49a
 
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2Dd 6903 Dd9840 Da 6832 Odo 225 2009 2
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2Milagros Daly
 

En vedette (20)

Itinerario De La Visita Cultural A MéRida
Itinerario De La Visita Cultural A MéRidaItinerario De La Visita Cultural A MéRida
Itinerario De La Visita Cultural A MéRida
 
Un Día Normal by Daniel Pacheco
Un Día Normal by Daniel PachecoUn Día Normal by Daniel Pacheco
Un Día Normal by Daniel Pacheco
 
Dona i Salut
Dona i SalutDona i Salut
Dona i Salut
 
T.5
T.5T.5
T.5
 
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden C
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden CResistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden C
Resistiendo Los Nocheros Nos Han Robado Hasta La Primavera Pero No Pueden C
 
04. Procesador De Textos. Ayuda De Open Office
04. Procesador De Textos. Ayuda De Open Office04. Procesador De Textos. Ayuda De Open Office
04. Procesador De Textos. Ayuda De Open Office
 
El+Anclaje+De+La+LegislacióN+Escolar
El+Anclaje+De+La+LegislacióN+EscolarEl+Anclaje+De+La+LegislacióN+Escolar
El+Anclaje+De+La+LegislacióN+Escolar
 
Tapas Revistas revistagradería.co
Tapas Revistas revistagradería.coTapas Revistas revistagradería.co
Tapas Revistas revistagradería.co
 
Bernardita Pascual / Backmedia
Bernardita Pascual / BackmediaBernardita Pascual / Backmedia
Bernardita Pascual / Backmedia
 
Red Local
Red LocalRed Local
Red Local
 
Psp de controlstore
Psp de controlstorePsp de controlstore
Psp de controlstore
 
Estructura Y Mecanismos De Seguimiento Del Pnde
Estructura Y Mecanismos De Seguimiento Del PndeEstructura Y Mecanismos De Seguimiento Del Pnde
Estructura Y Mecanismos De Seguimiento Del Pnde
 
Futbol
FutbolFutbol
Futbol
 
E Mail Inicio10
E Mail Inicio10E Mail Inicio10
E Mail Inicio10
 
Alex
AlexAlex
Alex
 
PresentacióN Roel
PresentacióN RoelPresentacióN Roel
PresentacióN Roel
 
Experimento erosión
Experimento erosiónExperimento erosión
Experimento erosión
 
Cuando Los Padres Envejecen
Cuando Los Padres EnvejecenCuando Los Padres Envejecen
Cuando Los Padres Envejecen
 
Jean Jacques Rousseau Terminadas Solo Tiene Biografia , Legado Literario
Jean Jacques Rousseau   Terminadas Solo Tiene Biografia , Legado LiterarioJean Jacques Rousseau   Terminadas Solo Tiene Biografia , Legado Literario
Jean Jacques Rousseau Terminadas Solo Tiene Biografia , Legado Literario
 
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2Dd 6903 Dd9840 Da 6832 Odo 225 2009 2
Dd 6903 Dd9840 Da 6832 Odo 225 2009 2
 

Similaire à 57 Php. Funciones De Compresion

Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivoscAaronVega18
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivossstaniarodri
 
Utp pti_s11_archivos
 Utp pti_s11_archivos Utp pti_s11_archivos
Utp pti_s11_archivosc09271
 
Comandos básicos para la terminal de ubuntu
Comandos básicos para la terminal de ubuntuComandos básicos para la terminal de ubuntu
Comandos básicos para la terminal de ubuntuMonchitocm Cuemtz
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo Ctacubomx
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++die_dex
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsamdevxon9
 
10 comandos basicos de linux
10 comandos basicos de linux10 comandos basicos de linux
10 comandos basicos de linuxDarwin Mx
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Textonakaryortegaleon
 
Quasi - Metodos de empaquetado y compresion en Linux
Quasi - Metodos de empaquetado y compresion en LinuxQuasi - Metodos de empaquetado y compresion en Linux
Quasi - Metodos de empaquetado y compresion en Linuxdegarden
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.comFresyMetal
 

Similaire à 57 Php. Funciones De Compresion (20)

Unidad 3 ficheros
Unidad 3 ficherosUnidad 3 ficheros
Unidad 3 ficheros
 
Manejo dearchivosc
Manejo dearchivoscManejo dearchivosc
Manejo dearchivosc
 
Archivos c
Archivos cArchivos c
Archivos c
 
Archivos c
Archivos cArchivos c
Archivos c
 
Fichc
FichcFichc
Fichc
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Funciones C (gnu/linux)
Funciones C (gnu/linux)Funciones C (gnu/linux)
Funciones C (gnu/linux)
 
Utp pti_s11_archivos
 Utp pti_s11_archivos Utp pti_s11_archivos
Utp pti_s11_archivos
 
Comandos básicos para la terminal de ubuntu
Comandos básicos para la terminal de ubuntuComandos básicos para la terminal de ubuntu
Comandos básicos para la terminal de ubuntu
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 
Comandos ubuntu
Comandos ubuntuComandos ubuntu
Comandos ubuntu
 
Comandos ubuntu
Comandos ubuntuComandos ubuntu
Comandos ubuntu
 
PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++PUNTEROS (APUNTADORES) EN C++
PUNTEROS (APUNTADORES) EN C++
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
10 comandos basicos de linux
10 comandos basicos de linux10 comandos basicos de linux
10 comandos basicos de linux
 
Ficheros
FicherosFicheros
Ficheros
 
Objetivo 01 Archivos de Texto
Objetivo 01 Archivos de TextoObjetivo 01 Archivos de Texto
Objetivo 01 Archivos de Texto
 
Tarea pagweb
Tarea pagwebTarea pagweb
Tarea pagweb
 
Quasi - Metodos de empaquetado y compresion en Linux
Quasi - Metodos de empaquetado y compresion en LinuxQuasi - Metodos de empaquetado y compresion en Linux
Quasi - Metodos de empaquetado y compresion en Linux
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.com
 

Plus de José M. Padilla

Informe Riesgos y amenazas en cloud computing. INTECTO-CERT
Informe Riesgos y amenazas en cloud computing. INTECTO-CERTInforme Riesgos y amenazas en cloud computing. INTECTO-CERT
Informe Riesgos y amenazas en cloud computing. INTECTO-CERTJosé M. Padilla
 
Manual multimedia y web 2.0
Manual multimedia y web 2.0Manual multimedia y web 2.0
Manual multimedia y web 2.0José M. Padilla
 
Guia optimizacion motores_busqueda
Guia optimizacion motores_busquedaGuia optimizacion motores_busqueda
Guia optimizacion motores_busquedaJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004José M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody AssistantModulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody AssistantJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke PlayerModulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke PlayerJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower AmpModulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower AmpJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track StudioModulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track StudioJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. AudacityModulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. AudacityJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One PlayerModulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One PlayerJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C DexModulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C DexJosé M. Padilla
 
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema OperativoModulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema OperativoJosé M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
Modulo 1. Sonido Y Musica Por Ordenador. 07 AlmacenamientoModulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
Modulo 1. Sonido Y Musica Por Ordenador. 07 AlmacenamientoJosé M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
Modulo 1. Sonido Y Musica Por Ordenador. 06 El AudioModulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
Modulo 1. Sonido Y Musica Por Ordenador. 06 El AudioJosé M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
Modulo 1. Sonido Y Musica Por Ordenador. 05 El MidiModulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
Modulo 1. Sonido Y Musica Por Ordenador. 05 El MidiJosé M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. EdicionModulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. EdicionJosé M. Padilla
 
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su RepresentacionModulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su RepresentacionJosé M. Padilla
 
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.José M. Padilla
 
00 Sonido y musica por ordenador. Guia del alumno.
00 Sonido y musica por ordenador. Guia del alumno.00 Sonido y musica por ordenador. Guia del alumno.
00 Sonido y musica por ordenador. Guia del alumno.José M. Padilla
 
00 Sonido y musica por ordenador. Caso 20
00 Sonido y musica por ordenador. Caso 2000 Sonido y musica por ordenador. Caso 20
00 Sonido y musica por ordenador. Caso 20José M. Padilla
 

Plus de José M. Padilla (20)

Informe Riesgos y amenazas en cloud computing. INTECTO-CERT
Informe Riesgos y amenazas en cloud computing. INTECTO-CERTInforme Riesgos y amenazas en cloud computing. INTECTO-CERT
Informe Riesgos y amenazas en cloud computing. INTECTO-CERT
 
Manual multimedia y web 2.0
Manual multimedia y web 2.0Manual multimedia y web 2.0
Manual multimedia y web 2.0
 
Guia optimizacion motores_busqueda
Guia optimizacion motores_busquedaGuia optimizacion motores_busqueda
Guia optimizacion motores_busqueda
 
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
Modulo 2. Sonido Y Musica Por Ordenador. 08 Partituras. Note Pad 2004
 
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody AssistantModulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
Modulo 2. Sonido Y Musica Por Ordenador. 10 Karaoke 2. Melody Assistant
 
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke PlayerModulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
Modulo 2. Sonido Y Musica Por Ordenador. 09 Karaoke 1. Van Basco Karaoke Player
 
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower AmpModulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
Modulo 2. Sonido Y Musica Por Ordenador. 07 Conversor. D Bpower Amp
 
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track StudioModulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
Modulo 2. Sonido Y Musica Por Ordenador. 06 Secuenciador. N Track Studio
 
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. AudacityModulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
Modulo 2. Sonido Y Musica Por Ordenador. 05 Editor De Audio. Audacity
 
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One PlayerModulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
Modulo 2. Sonido Y Musica Por Ordenador. 04 Reproductor. Real One Player
 
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C DexModulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
Modulo 2. Sonido Y Musica Por Ordenador. 03 Extraccion De Audio. C Dex
 
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema OperativoModulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
Modulo 2. Sonido Y Musica Por Ordenador. 02 Sonido En El Sistema Operativo
 
Modulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
Modulo 1. Sonido Y Musica Por Ordenador. 07 AlmacenamientoModulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
Modulo 1. Sonido Y Musica Por Ordenador. 07 Almacenamiento
 
Modulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
Modulo 1. Sonido Y Musica Por Ordenador. 06 El AudioModulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
Modulo 1. Sonido Y Musica Por Ordenador. 06 El Audio
 
Modulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
Modulo 1. Sonido Y Musica Por Ordenador. 05 El MidiModulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
Modulo 1. Sonido Y Musica Por Ordenador. 05 El Midi
 
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. EdicionModulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
Modulo 1. Sonido Y Musica Por Ordenador. 04 El Estudio De Sonido. Edicion
 
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su RepresentacionModulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
Modulo 1. Sonido Y Musica Por Ordenador. 03 El Sonido Y Su Representacion
 
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
Modulo 1. Sonido y musica por ordenador. 02 El ordenador en el aula.
 
00 Sonido y musica por ordenador. Guia del alumno.
00 Sonido y musica por ordenador. Guia del alumno.00 Sonido y musica por ordenador. Guia del alumno.
00 Sonido y musica por ordenador. Guia del alumno.
 
00 Sonido y musica por ordenador. Caso 20
00 Sonido y musica por ordenador. Caso 2000 Sonido y musica por ordenador. Caso 20
00 Sonido y musica por ordenador. Caso 20
 

Dernier

_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 

Dernier (20)

_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 

57 Php. Funciones De Compresion

  • 1. Funciones de compresión Funciones de compresión Herramientas de compresión zlib Existen varias herramientas para compresión de ficheros. Las más populares son las funciones de la biblioteca bzip2 de Julian Seward que generan ficheros comprimidos que se Algunas de esas funciones son estas: reconocen por su extensión (bz2) y la función de zlib de Jean-loup Gailly y Mark Adler para leer y grabar archivos comprimidos con extensión gz. $f=gzopen(fich,mod, path) En esta página veremos el uso de la segunda de las opciones. Empezaremos omprobando Abre el fichero identificado por el en info.php que la opción está activada. Deberemos ver algo como esto: parámetro fich y lo hace en modo especificado en el parámetro modo r o w según se trate de modo lectura o escritura. Cuando se trata del modo de escritura el parámetro w debe ir seguido de un número comprendido entre cero y nueve que especifica el grado de compresión pretendido. El parámetro path es opcional y En la versión de PHP que estamos utilizando esta opción se activa por defecto y no es puede contener un valor lógico necesario modificar ningún parámetro en php.ini. (cero ó uno). Cuando el valor de este parámetro es 1 permite Sólo en el caso de utilizar versiones anteriores a PHP 4.2.3 sería necesario modificar el incluir en el parámetro fich la ruta fichero php.ini descomentando la línea que dice: extension=php_zlib.dll. del directorio o subdirectorio que alberga el fichero que tratamos de abrir Ejemplo de compresión y lectura de un fichero Si se incluye una ruta sin En este ejemplo trataremos de utilizar las funciones de compresión comentadas al especificar el valor 1 en el parámetro path aparecerá un error. margen. Si observas las formas de apertura de los ficheros verás que son similares a las utilizadas para la gestión de ficheros. Los modos de apertura para escritura son: "w0" a gzclose($f) "w9" siendo los valores de cero a nueve los indicadores de los niveles de compresión. Para lectura debe usarse el modo "r" sin indicar ningún nivel de compresión. Cierra el fichero asociado al identificador de recurso $f. Esta función devuelve TRUE en caso de <? éxito o FALSE si se produjera un # asignamos un nombre al fichero con extensión "gz" error. $fichero ='prueba.gz'; # abrimos el fichero en modo escritura (w) gzeof($f) # con el nivel máximo de compresión (9) $f=gzopen($fichero,"w9",0); Esta función devuelve 1 (TRUE) en el caso de que el puntero apunte al $cadena="Este es el primer bloque de texto que hemos final del fichero abierto e introducido en el fichero comprimido. "; identificado mediante $f. $cadena .="Añadimos este segundo bloque"; También devuelve TRUE en caso echo "<i>Esta es la cadena inicial:</i> ".$cadena."<br>"; de error. # escribimos (comprimida) la cadena en el fichero Si el fichero estuviera abierto y el puntero apunta a una posición distinta del final del fichero gzwrite($f,$cadena); # cerramos el fichero gzclose($f); #abrimos el fichero en modo devolverá FALSE. lectura $f=gzopen($fichero,"r"); echo "<i>Estos son los tres primeros caracteres de la cadena:</i> "; # escribimos los tres primeros caracteres, el puntero (por defecto) # gzseek($f,desplaza) apunta al comienzo de la cadena echo gzread($f, 3)."<br>"; # desplazamos el puntero hasta el carácter nº 8 gzseek($f,8); echo "<i>Estos son los seis caracteres siguientes al Desplaza -dentro del fichero octavo:</i> "; # escribimos seis caracteres a partir del octavo echo gzread($f, identificado por $f- el puntero -a 6)."<br>"; echo "<i>Ahora el puntero está en:</i> "; # buscamos la posición actual de partir de su posición actual- la cantidad de bytes indicados en el puntero echo gztell($f)."<br>"; # movemos el puntero hasta el comienzo del fichero parámetro desplaza gzrewind($f); echo "<i>Estos son los diez primeros caracteres de la cadena:</i> "; # escribimos los diez primeros caracteres del fichero echo gzread($f, 10)."<br>"; # gztell($f) volvemos el puntero al comienzo del fichero gzrewind($f); echo "<i>Escribimos el fichero completo:</i> "; # con gzpasthru escribimos el fichero completo # el puntero está al Devuelve la posición actual del principio porque alli lo ha situado gzrewind # no necesitamos utilizar "echo" ni "print" ya puntero. que gzpassthru # escribe directamente el contenido del fichero gzpassthru($f); # gzrewind($f) tenemos que volver a abrir el fichero ya que gzpassthru # se encargó de cerrarlo después de leerlo $f=gzopen($fichero,"r"); echo "<br><i>Aquí estará todo el fichero:</i> "; Coloca el puntero al comienzo del gzpassthru ($f); # la función readgzfile abre el fichero, imprime su contenido y lo cierra fichero echo "<br><i>Aqui se imprime la cadena completa usando readgzfile</i>: <br>"; readgzfile($fichero); /* con gzfile también se abre el fichero, pero ahora el contenido no gzread($f, longitud) se presenta directamente. Es recogido en un array. Para visualizarlo debemos imprimir el Devuelve una cadena -después de primer elemento del array. */ $z=gzfile($fichero); echo "<br><i>Este es el primer descomprimida- de longitud igual a elemento (0) del array generado por gzfile</i>: ".$z[0]; # gzfile cierra el fichero. # No la indicada en el parámetro podemos poner gzclose porque nos daría error ?> longitud. La lectura comienza en la posición actual del puntero y comprime1.php acaba cuando la longitud de la cadena leida y descomprimida sea igual al valor del parámetro Utilizando un directorio distinto longitud o cuando se haya alcanzado el final del fichero. El ejemplo anterior está desarrollado para el supuesto que el script y el fichero comprimido gzpassthru ($f) estén en el mismo directorio. Esta función escribe en la salida Si quieres utilizar estas funciones utilizando ficheros alojados en un directorio distinto, solo (no necesita la función echo) el tendrás que recordar que algunas funciones deben incluir el parámetro complementario 1. contenido del fichero desde la Estos son las modificaciones que deberías efectuar: posición actual del puntero hasta el final del fichero. Como es lógico, si estuviera precedida de s La variable que recoge el nombre del fichero debe incluir el path, por ejemplo: gzrewind escribiría el fichero $fichero ='/subdirectorio/prueba.gz' completo.
  • 2. s La función gzopen debe incluir el tercer parámetro (path) con valor 1, por ejemplo: $f=gzopen($fichero,"r",1); ¡Cuidado! s También las funciones gzfile y readgzfile -que abren automáticamente el fichero- La función gzpassthru cierra deberán incluir ese valor 1 como parámetro añadido. Por ejemplo: readgzfile automáticamente el fichero ($fichero,1) ó $z=gzfile($fichero,1) después de escribir su contenido. Si pones gzclose después de esta función te Elección del grado óptimo de compresión dará error y si quieres seguir utilizando el fichero tendrás Puede parecer -a primera vista- que la condición óptima de compresión sería elegir el que volver a abrirlo con la nivel 9 y eso es cierto si tomamos únicamente en consideración el tamaño final del fichero función gzopen. comprimido. Sin embargo no existe una relación lineal entre reducción de tamaño/nivel de compresión. Sin que pueda considerarse ninguna referencia exacta -la compresión alcanzable gzwrite($f, cadena, long) depende del contenido del fichero y en consecuencia no puede establecerse una relación funcional puede comprobarse experimentalmente que -aparentemente- a partir del grado 2 la Esta función escribe en el fichero reducción de tamaño del fichero es mínima y que cuando se aumenta el grado de compresión comprimido que se identifica por a niveles máximos (tratándose de ficheros de un cierto tamaño) el tiempo de ejecución $f la cadena contenida en el aumenta sustancialmente como consecuencia de la reiteración de la ejecución de los parámetro cadena. algoritmos de compresión. Opcionalmente puede llevar el tercer parámetro (longitud) en cuyo caso solo escribirá los Compresión de cadenas primeros longitud bytes de la cadena. Si el parámetro longitud En este ejemplo utilizamos las tres funciones de compresión de cadenas así como las existe y es mayor que la longitud opciones de descompresión y lectura de cada una de ellas. de la cadena, insertará la cadena completa. <? gzputs($f, cadena, long) # creamos una cadena de ejemplo $cadena="Esta es la cadena a comprimir. Intentaremos que sea larga Esta función es idéntica a gzwrite. porque parece que si la hacemos muy corta en vez de reducirse readgzfile($fichero,path) su tamaño parece que aumenta. Y como sigue siendo enormemente grande la cadena comprimida intentaremos hacerla aun mayor Esta función abre de forma a ver que pasa "; automática el fichero indicado # comprimimos con la función gzcompress como parámetro fichero, además $c=gzcompress($cadena,9); lo lee y lo escribe de forma echo "<br>".$c; automática sin necesidad de usar # descomprimimos con la función gzcompress echo ni ninguna otra función de $dc=gzuncompress($c); salida. echo "<br>".$dc."<br>"; Si el fichero no está en el mismo # ahora utilizamos la función gzencode directorio que el script -además de $c1=gzencode($cadena,9,FORCE_GZIP); incluir la ruta en la cadena fichero- echo "<br>".$c1."<br>"; es necesario añadir el segundo /* el resultado lo guardamos en un fichero con extensión gz parámetro -path- con valor 1. pero abierto en modo "normal", es decir escribiendo dentro del fichero la cadena "tal cual" fue devuelta Comprimiendo cadenas por gzencode*/ $f=fopen("pepe.gz","w"); fwrite($f,$c1); Las funciones anteriores permiten fclose($f); la creación, lectura y modificación de ficheros comprimidos # abrimos el fichero anterior utilizando las funciones # de lectura de fichero comprimidos Sin embargo, existen otras $f=gzopen("pepe.gz","r"); funciones PHP que permiten readgzfile("pepe.gz"); comprimir cadenas. Aquí tienes gzclose($f); algunas de ellas. # borramos el fichero una vez leido unlink("pepe.gz"); gzcompress(cadena, nivel) # otra opción de compresión de cadenas utilizando la función Esta función devuelve una cadena # gzdeflate comprimida a partir de una $c2= gzdeflate($cadena,9); original especificada en el parámet echo "<br><BR>".$c2; ´ro cadena. El nivel de # con la función gzinflate podemos descomprimir la cadena compresión (valores entre 0 y 9) # comprimida generada por gzdeflate se especifica en el parámetro nivel. $dc2=gzinflate($c2); echo "<br>".$dc2; Las cadenas resultantes de esta función pueden descomprimirse ?> aplicando la función gzuncompress que te comento comprime2.php más abajo. gzdeflate(cadena, nivel) Economizando espacio en el servidor Se comporta de forma idéntica a la función anterior. La única salvedad parece ser que utiliza un algoritmo Las opciones de compresión pueden permitirnos un cierto ahorro de espacio de servidor. de compresión distinto. Las páginas HTML podrían almacenarse comprimidas y ser llamadas a través de un script de descompresión que permita visualizarlas. En este ejemplo se efectúa la compresión de una Las cadenas resultantes de esta página web (una de las páginas de estos materiales guardada en formato HTML) cuyo función también pueden tamaño original es de 29.015 bytes. El fichero comprimido resultante ocupa 9.886 bytes. descomprimirse aplicando la Como verás, el fichero se reduce a poco más del 30% del original. función gzdeflate. gzencode(cad, niv, opc) <? # Creamos una variable "vacia" Esta función devuelve la cadena $cadena=""; cad comprimida con el nivel # Abrimos el fichero en modo lectura (r) especificado en niv y permite dos $f1=fopen("prueba.html","r"); opciones de compresión: FORCE_GZIP ó /* hacemos un bucle para leer el fichero FORCE_DEFLATE que se pueden hasta encontrar el final (feof) y vamos recogiendo especificarse como tercer el contenido en la variable */ parámetro (opc) sin encerrar while (!feof($f1)) { entre comillas. $cadena .= fgets($f1, 1024);
  • 3. } El valor por defecto (cuando no se /*comprimimos la cadena con gzencode especifica el parámetro opción) es con lo cual la propia función añade los "encabezados" FORCE_GZIP de formato gzip*/ $c1=gzencode($cadena,3,FORCE_GZIP); Descomprimiendo cadenas /* abrimos un nuevo fichero modo escritura (w) con "fopen", es decir como un fichero normal con extensión GZ */ gzuncompress(cadena) $f=fopen("prueba.html.gz","w"); /* escribimos la cadena "tal cual" Con esta función se obtiene una en este fichero */ cadena -descomprimida- a partir fwrite($f,$c1); de la cadena comprimida indicada # cerramos el fichero comprimido en el parámetro cadena- siempre fclose($f); que esta hubiera sido comprimida echo "La compresión ha terminado"; usando la función gzcompress ?> gzinflate(cadena) Funciona igual que la anterior. La comprime3.php única diferencia es que esta descomprime las cadenas que han El fichero comprimido mediante el script anterior no puede ser visualizado directamente. sido comprimidas con gzdeflate Requiere ser descomprimido antes de ser enviado al navegador. Y eso podría hacerse mediante un script como este: Funciones para buferización de salidas <? #abrimos el fichero comprimido con "gzopen" ob_start() $f=gzopen("prueba.html.gz","r"); /* leemos el contenido completo Esta función activa la buferización en forma transparente ya que readgzfile descomprime de las salidas generadas por el la salida*/ script de PHP a partir de su readgzfile("prueba.html.gz"); activación. # cerramos el fichero Dicho de otra forma, impide que gzclose($f); las salidas generadas por el script ?> se envíen al cliente y por tanto no serán visualizadas en el navegador. A partir del momento Visualizar fichero de activar esa buferización, todas comprimido las salidas generadas se almacenan en una variable específica llamada: Economizando tiempo de transferencia ob_get_contents() ob_end_clean() No solo se puede economizar espacio en el servidor. También es posible enviar comprimidas -desde el servidor hasta el cliente- las páginas web. Esta función desactiva la buferización iniciada por ob_start En ese caso, será el propio navegador el que interprete la información comprimida y la y borra los contenidos de la presente de una manera transparente. Lo que habremos ahorrado habrá sido tiempo de variable ob_get_contents() transferencia pero, igual que ocurría en el comentario anterior, esa reducción del volumen de ob_clean() información a transferir afecta únicamente al contenido de la página y no a otros elementos que puede incluir, tales como imágenes, etcétera. Esta función vacía el buffer de salida pero sin desactivar la Este es un ejemplo de un script que comprime una página web y la envía comprimida al bufferización. Las salidas cliente. posteriores a esta función seguirían siendo recogidas en el buffer. <? /* activamos la bufferización de la salida para que no se presenten los resultados del script Cabeceras para transferir directamente en la página información comprimida ¡¡Cuidado con no dejar lineas en blanco delante del script ya que vamos a insertar luego Headers!! */ Cuando un servidor recibe una ob_start(); petición de una página web el # abrimos y leemos el fichero html navegador del cliente siempre $f1=fopen("prueba.html","r"); envía información sobre su fpassthru($f1); disposición a aceptar diferentes # recogemos el contenido del buffer en la variable $cadena tipos de contenidos. $cadena = ob_get_contents(); Una de las informaciones que # comprimimos la cadea con gzencode suelen recibirse con la petición del # para que incluya los encabezados "gzip" navegador se refiere a su $cd=gzencode($cadena,3,FORCE_GZIP); capacidad para aceptar contenidos # desactivamos la "buferización" codificados y esto suelen hacerlo # y borramos el contenido del buffer mediante el envio de una cabecera ob_end_clean(); que diría algo similar a esto: # insertamos la cabeceras Accept-Encoding:gzip,deflate o # indicando el tipo de contenido y el tamaño Accept-Encoding: gzip. Header('Content-Encoding: gzip'); Esta posibilidad es una Header('Content-Length: ' . strlen($cd));; característica común a todas las # presentamos el contenido (cadena comprimida) que será versiones modernas de los # "traducido" automáticamente por el navegador navegadores (es posible que echo $cd; algunas versiones antiguas no ?> acepten esta codificación) y bastará con se incluya en la respuesta (el documento Ejecutar script transferido por el servidor al cliente) la cabecera: El ejemplo anterior comprimía el contenido del fichero antes de enviarlo. En este que Header('Content-Encoding: gzip') incluimos a continuación partimos del supuesto de que la página ya está comprimida en el para que el navegador sepa que la servidor. Por tanto, tendremos que leer el fichero comprimido y enviarlo, de igual forma, al información llegará codificada y cliente. que debe activar -de forma automática- sus mecanismos de traducción de ese tipo de <? contenidos. ob_start(); /* En este caso abrimos el fichero con "gzopen"
  • 4. ya que se trata de un fichero comprimido Algunas limitaciones # todo lo demás es idéntico al ejemplo anterior*/ $f1=gzopen("prueba.html.gz","r"); En todos estos ejemplos hemos gzpassthru($f1); dado por supuesto que los $cadena = ob_get_contents(); navegadores de los clientes $cd=gzencode($cadena,3,FORCE_GZIP); aceptan la codificación gzip, ob_end_clean(); pero es evidente que si eso no Header('Content-Encoding: gzip'); ocurriera la página se visualizaría Header('Content-Length: ' . strlen($cd)); erróneamente. echo $cd; ?> Ejercicio nº 30 Ejecutar script Escribe un script que guarde en un fichero comprimido la Anterior Indice Siguiente imagen aviones4.jpg que tienes en el directorio images. Crea un segundo script que permita visualizarla en el navegador y evalúa la economía de espacio que aporta la compresión de este tipo de archivos.