Inserción de imágenes y elementos gráficos


Lineas y rectangulos
                                       Modificación de l...
incluido junto con estos
   materiales.                                     Incluir (en el mismo directorio que fpdf_con_g...
Upcoming SlideShare
Loading in …5
×

76 Php. Insercion De Imagenes Y Elementos Graficos

2,392 views

Published on

Published in: Technology, Art & Photos
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,392
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

76 Php. Insercion De Imagenes Y Elementos Graficos

  1. 1. Inserción de imágenes y elementos gráficos Lineas y rectangulos Modificación de la clase FPDF El fichero fpdf.php que contiene la clase FPDF tiene una carencia relativa a la gestión de La clase FPDF incluye métodos imágenes en formato GIF. En la propia principal http://www.fpdf.org/ se hace una mención para el dibujo de segmentos a esa carencia y la forma de subsanarla. rectilineos y de rectángulos. Las funciones que utiliza para Fichero inicial fpdf.php estos menesteres son las siguientes: Guardado como fpdf_con_gif.php $obj->Line(X1,Y1,X2,Y2) Modificaciones en el fichero inicial Si no se ha especificado ningún Línea Cambios color -usando SetDrawColor- o Donde dice: un espesor de línea - por medio de SetLineWidth - se usarán los if($type=='jpg' || $type=='jpeg') valores por defecto (color negro y $info=$this->_parsejpg($file); 0,2 mm. de espesor). elseif($type=='png') $info=$this->_parsepng($file); Cuando se trata de dibujar rectángulos, hemos de utilizar la else función: { //Allow for additional formats $obj->Rect(X1,Y1,A,H,'estilo') añadir las líneas en rojo: 911 donde X1 e Y1 son las if($type=='jpg' || $type=='jpeg') coordenadas de la esquina $info=$this->_parsejpg($file); superior izquierda del mismo, A el elseif($type=='png') ancho, H el alto y estilo que puede ser una de estas tres cadenas: D, $info=$this->_parsepng($file); F, DF que significan: dibujar elseif($type=='gif') líneas de borde, rellenar, y $info=$this->_parsegif($file); dibujar líneas y rellenar. Si no else se especifica estilo se interpretará { por defecto la opción D. //Allow for additional formats Donde dice: Las imágenes GIF //End of class } La clase FPDF, en su versión original, no permite utilizar anteponer: imágenes en formato GIF. No function _parsegif($file){ obstante es posible adaptar la clase y añadirle esa posibilidad. //Function by Jérôme Fenal Para ello es preciso realizar las require_once 'gif.php'; modificaciones que se indican a la //GIF class in pure PHP from Yamasoft derecha y que pueden resumires //(formerly at http://www.yamasoft.com) en tres acciones. $h=0; $w=0; $gif=new CGIF(); La primera de ellas es efectuar una if (!$gif->loadFile($file, 0)) modificación de la función Image $this->Error("GIF parser: unable to open file $file"); () contenida en la clase FPDF del if($gif->m_img->m_gih->m_bLocalClr) { fichero fpdf.php. Se trata de $nColors = $gif->m_img->m_gih->m_nTableSize; incluir la condición para imágenes gif. $pal = $gif->m_img->m_gih->m_colorTable->toString(); if($bgColor != -1) { El uso de imágenes GIF requiere $bgColor= $gif->m_img->m_gih->m_colorTable->colorIndex($bgColor); utilizar una nueva función } llamada _parsegif -la tienes en la $colspace='Indexed'; tabla de la derecha- que habrá que } elseif($gif->m_gfh->m_bGlobalClr) { incluir como un método más $nColors = $gif->m_gfh->m_nTableSize; dentro de la clase FPDF. $pal = $gif->m_gfh->m_colorTable->toString(); La función _parsegif requiere el if($bgColor != -1) { uso de un nuevo fichero -gif.php- $bgColor = $gif->m_gfh->m_colorTable->colorIndex($bgColor); desarrollado por Yamasoft y que 1638 } nosotros hemos encontrado en el $colspace='Indexed'; fichero zip que puede descargarse } else { desde este enlace. Lo hemos $nColors = 0; extraido de él y lo hemos incluido $bgColor = -1; en estos materiales. $colspace='DeviceGray'; $pal=''; Hemos editado el fichero fpdf.php } y lo hemos guardado con un nuevo nombre: fpdf_con_gif.php (se $trns=''; trata de conservar el fichero if($gif->m_img->m_bTrans && ($nColors > 0)) { original y hacer los cambios sobre $trns=array($gif->m_img->m_nTrans); uno nuevo) y hemos realizado los } cambios que se indican al margen $data=$gif->m_img->m_data; sobre este último fichero. $w=$gif->m_gfh->m_nWidth; $h=$gif->m_gfh->m_nHeight; Una vez realizadas las if($colspace=='Indexed' and empty($pal)) modificaciones la opción GIF ha $this->Error('Missing palette in '.$file); quedado totalmente funcional. if ($this->compress) { $data=gzcompress($data); ¡Cuidado! return array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'f'=>'FlateDecode', 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data); Los cambios comentados en } else { la tabla anterior ya han sido return array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, realizados. 'bpc'=>8, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$data); } Lao ficheros gif.php y } fpdf_con_gif.php se han
  2. 2. incluido junto con estos materiales. Incluir (en el mismo directorio que fpdf_con_gif.php) el fichero: gif.php Inserción de imágenes Se pueden incluir imágenes Un ejemplo con gráficos e imágenes mediante la función: <? $obj->Image('nombre',X1,Y1,A, #incluimos el fichero resultante de las modificaciones anteriores H,'tipo','enl') include("fpdf_con_gif.php"); donde X1 e Y1 son las define('FPDF_FONTPATH','c:/Apache/htdocs/cursoPHP/fontsPDF/'); coordenadas dónde se situará la /* establecemos las dimensiones del documento en mm. esquina superior izquierda de la creamos un nuevo objeto y A-4 apaisado. imagen, A es el ancho con el que Hemos modificado algunas funciones de la clase pero no le hemos se visualizará la imagen, H su cambiado altura, tipo es el formato de la el nombre, por ello el constructor es el mismo */ imagen original que puede ser: $MiPDF=new FPDF('L','mm','A4'); JPG, JPEG, PNG ó GIF. Por último, # ajustamos la visualización para ver la página completa en pantalla el parámetro enl permite -tal $MiPDF->SetDisplayMode('fullpage'); como ocurría con CELL ó con WRITE y con los mismos criterios #añadimos una página allí utilizados- establecer un enlace $MiPDF->AddPage(); externo o una referencia interna. # sin haber definido previamente ni un color ni un ancho de linea # aparecerá en negro y con un espesor de 0.2 mm El parámetro nombre debe $MiPDF->Line(5,5,287,5); especificar la ruta, el nombre y la #ensayamos las diferentes opciones de rectangulos extensión de la imagen a incluir. #con los colores y espesores por defecto La clase no soporta ni entrelazados $MiPDF->Rect(10,10,50,50); en las imágenes gif ni $MiPDF->Rect(70,10,50,50,'D'); transparencias (canales alfa) en las imágenes png. $MiPDF->Rect(140,10,50,50,'F'); $MiPDF->Rect(200,10,50,50,'DF'); Las dimensiones de la imagen # modificamos los colores y espesores de linea pueden omitirse (incluyendo en su $MiPDF->SetDrawColor(255,0,0); lugar una cadena vacia). En ese $MiPDF->SetFillColor(0,0,255); caso incluiría la imagen original $MiPDF->SetLineWidth(3); con una resolución de 72 puntos # dibujamos nuevos rectángulos con los nuevos valores por pulgada. $MiPDF->Rect(10,65,50,50); Si se especifica una sola de las $MiPDF->Rect(70,65,50,50,'D'); dimensiones la otra se calcula de $MiPDF->Rect(140,65,50,50,'F'); forma automática y se mantienen $MiPDF->Rect(200,65,50,50,'FD'); las proporciones. Si se insertan # insertamos una imagen (png) sin especificar dimensiones valores de largo y ancho pueden $MiPDF->Image('./images/cruz.png',10,118,'','','png'); generarse, a voluntad, efectos de # otra imagen(jpg) en la que unicamente especificamos el alto distorsión. $MiPDF->Image('./images/cabina.jpg',90,118,'',90,'jpg'); # otra imagen(gif) en la que especificamos ancho y alto y provocamos Inserción de # una distorsión imágenes dinámicas $MiPDF->Image('./images/peligro.gif',215,118,80,50,'gif'); #añadimos una nueva página $MiPDF->AddPage(); Es posible combinar la potencia # asignamos un nombre a la imagen dinámica que vamos a generar gráfica de las funciones de PHP para la creación de imágenes # e incluir en el documento PDF dinámicas con la opción de crear $imagen="ladinamica.jpg"; ficheros PDF mediente la clase # ejecutamos la función que crea la nueva imagen FPDF. La forma de proceder es imagen1($imagen); simple y puedes verla en el # insertamos la nueva imagen y generamos la salida ejemplo que tienes aquí a la $MiPDF->Image($imagen, 45, 35 , 150, '','jpg','http://www.google.es'); derecha. $MiPDF->Output(); # ya podemos borrar la imagen dinámica que hemos creado Basta incluir una función -dentro unlink($imagen); del mismo fichero o por inclusión de un fichero externo que la # esta es la función que crea la imagen dinamica contenga- que cree la imagen # le asignamos un nombre para que sea guarda temporalmente dinámica y la guarde con un # en el directorio actual nombre previamente establecido. function imagen1($imagen){ Header("Content-type: image/jpeg"); Incluimos el nombre de esa $im = imagecreate(200,200); imagen en la función Image y, una $fondo=imagecolorallocate ($im, 0, 0, 200); vez producida la salida mediante $blanco=imagecolorallocate ($im, 255, 255, 255); Output, proceder a borrarla del Imagefill ($im, 0, 0, $fondo); directorio en el que fue creada. Imagerectangle ($im, 10, 10, 190, 190, $blanco); Imagejpeg($im,$imagen); ImageDestroy($im); } ?> Ejemplo140.php Anterior Indice Siguiente

×