Foros del Web » Programando para Internet » PHP »

Uso de la GD y carga de trabajo del servidor

Estas en el tema de Uso de la GD y carga de trabajo del servidor en el foro de PHP en Foros del Web. Muy buenas Estoy con un sitio web que lleva una interfaz gráfica bastante elaborada y ajustada. Lleva un encabezado con un collage de 4 imágenes ...
  #1 (permalink)  
Antiguo 09/11/2005, 10:56
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Uso de la GD y carga de trabajo del servidor

Muy buenas

Estoy con un sitio web que lleva una interfaz gráfica bastante elaborada y ajustada. Lleva un encabezado con un collage de 4 imágenes y encima de estas el título de cada sección con fuente de tipo caligráfica y sombra, osea, que el título sí o sí va incluído en la imagen pero además las imágenes del collage cambian en cada sección, debe ajustarse además a distintas resoluciones y encima está en 3 idiomas y el cliente amenaza con pretender cambiar las imágenes cada poco.

Para no pasarme el tiempo creando collages con textos en distintos idiomas y combinaciones de fotos para distintas resoluciones decidí montarlo todo en el servidor usando la librería GD y sólo pasando los nombres de las imágenes monta el encabezado para la resolución que sea y es fantástico todo pero .... ahora me entra la duda de si va a ser mucha carga de trabajo para el servidor el montar un collage de estos para cada vez se cargue cualquier página del sitio.

Mi pregunta es... ¿es demasiado? ¿me he pasado?

Otra pregunta también que tengo es si es seguro. Es decir, puede fallar la librería y que se queden las páginas sin las imágenes?

Es que es la primera vez que trabajo creando imágenes en el server y no sé si pueden haber "peros"

Gracias y un saludo
  #2 (permalink)  
Antiguo 09/11/2005, 12:36
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 4 meses
Puntos: 34
1- Yo creo que si. Pero si has hecho bien las cosas, y tiene una funcion por ejemplo que sea crearHeader(), puedes en esta, guardar la cabecera en el servidor y antes de crearla hacerlo solo si no lo has echo antes. De esta manera haras el proceso una unica vez.

2- No deberias tener ningun probelma.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 09/11/2005, 13:00
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Hola nicolaspar, gracias por contestar

2 - ¡Qué bien!

1 - me perdí ¿cómo puedo guardar la cabecera en el servidor? ¿se podría? (eso sería yá la leche... )
  #4 (permalink)  
Antiguo 10/11/2005, 04:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo que menciona nicolaspar sería algo como generar una "caché" de esas cabeceras.

Es decir .. tus cabeceras no van a cambiar dinámicamente (ese texto/imagen que las compongan) hasta que modifiques ese texto por alguna razón, eso sería en el menor de los casos.

En consecuencia, tendrías que generar ese gráfico dinamicamente con las librerías GD hacia un archivo, lo cual se puede hacer perfectamente pues a la hora de generar un gráfico sueles tener dos opciones:

1) lo envias directo al cliente (usando las cabeceras HTTP adecuadas vía header() + las funcoines GD que envian al buffer de salida su trabajo (imagepng() .. imgagejpg() ..)

2) Generas el archivo (el .jpg, .png ...) de ese gráfico generádo dinámicamente, para eso .. las funciones imageXXX() tienen un parámetro opcional (el 2° normalmente) que indica el nombre del archivo que generas y donde lo quieres hubicar (ruta). Si no lo indicas, la función hace lo del punto 1 que te comenté.

Por ende, lo único que debes hacer es en tu aplicación un apartado de administración del sistio donde "dispares" la generación de gráfico si corresponde: es decir; si modificastes los valores de esos textos.

Para el funcionamiento del resto del sitio, tu siempre tomarías ese nombre de gráfico generado "cabecera.png" por ejemplo .. que es lo que siempre generarías de forma dinámica ante un cambio de esos textos .. Ahora, si tienes vários "idiomas" (en definitiva várias Cabeceras como gráfico distintas) .. igualmente puedes generar archivos por separado para cada "idioma" pero siempre "disparado" la generaciónd el archivo por tu script PHP de proceso (con GD) que genere el gráfico ante un cambio de esos datos.

Un saludo,
  #5 (permalink)  
Antiguo 10/11/2005, 14:38
 
Fecha de Ingreso: enero-2003
Ubicación: Asunción
Mensajes: 48
Antigüedad: 21 años, 3 meses
Puntos: 1
Problema con Path de GD en servidor Linux

Hola gente del foro;

Leí este post y vi que ya estan usando la generación dinámica del texto por Gd. Yo tengo un sitio similar al que dice tunait y al probarlo localmente me funcina perfectamente la generación dinamica del texto pero al subirla al servidor en internet que es un linux con apache y php no encuentra la carpeta fuentes o la fuente en específica que utilizo. Es que no se el path de las fuentes en mi servidor. En mi servidor local que es un windows con php y apache no le pongo path y funciona

Aqui van los parametros:

Código PHP:
<?php
// Establecer el tipo de imagen
header("Content-type: image/png");

// Crear la imagen y darle el ancho y alto máximo
$TXT imagecreate(40025);

// Crear algunos colores
$blanco imagecolorallocate($TXT255255255);
$gris  imagecolorallocate($TXT255255255);
$negro  imagecolorallocate($TXT515151);

// El texto a imprimir
//$texto = 'Titulo de página ';
$texto $_GET['t'] ;


// Reemplaze la ruta con su propio ruta a la fuente
$fuente 'times.ttf';

// Agregar una sombre al texto
imagettftext($TXT1801119$gris$fuente$texto);

// Agregar el texto, aqui se cambia el tamaño del texto
imagettftext($TXT1801018$negro$fuente$texto);

// Usar imagepng() resulta en texto mas claro, en comparacion con imagejpeg()
imagepng($TXT);
imagedestroy($TXT);
?>
  #6 (permalink)  
Antiguo 11/11/2005, 07:34
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Gracias Cluster

No sabía que se podía guardar directamente el archivo, me viene fenomenal

Estaba comenzando a crear el documento para administrar el meollo pero se me ha ocurrido hacerlo de otra forma (casi igual, pero sin panel de administración), me gustaría que alguien me confirme si también así le estoy agregando carga al servidor....

Había pensado en que al llamar al archivo (por ej. imas/encabezados/bienvenidos_1024_eng.jpg) que antes de escribirlo verifique si existe el archivo y si no existe que lo genere en esa ruta. La pregunta es si cada vez que se escriba el nombre de archivo el hacer la comprobación de que existe le cuesta mucho al server o por el contrario apenas le cuesta.
Si pudiera hacerlo así, a la hora de cambiar alguna imagen en el collage, bastaría con que eliminara las imágenes actuales para que al no encontrarlas las volviera a crear con la/s imágen/es nueva/s. Así simplemente se crearían a medida que no se encuentren si ha habido algún cambio.

¿o es mejor que le pida yo cuando quiera que las cree desde admin y así se ahorra verificar si el archivo existe en cada llamada a cada página?

En caso de que verifique si existe el archivo lo hago con file_exists() o hay alguna alternativa mejor?

Thanx
  #7 (permalink)  
Antiguo 11/11/2005, 07:37
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 7 meses
Puntos: 381
Cita:
Iniciado por futuresoldier
al probarlo localmente me funcina perfectamente la generación dinamica del texto pero al subirla al servidor en internet que es un linux con apache y php no encuentra la carpeta fuentes o la fuente en específica que utilizo. Es que no se el path de las fuentes en mi servidor. En mi servidor local que es un windows con php y apache no le pongo path y funciona
Hola futuresoldier

Has probado a poner la fuente directamente en el mismo directorio donde esté la aplicación que genera la imagen??
  #8 (permalink)  
Antiguo 11/11/2005, 07:48
 
Fecha de Ingreso: enero-2003
Ubicación: Asunción
Mensajes: 48
Antigüedad: 21 años, 3 meses
Puntos: 1
Si, lo he probado

Tunait, lo he probado pero no funciona. me imagino que la times.ttf ha de ser distinta para windows y para linux. Sabes algo de eso?
  #9 (permalink)  
Antiguo 11/11/2005, 10:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por futuresoldier
Tunait, lo he probado pero no funciona. me imagino que la times.ttf ha de ser distinta para windows y para linux. Sabes algo de eso?
No son diferentes .. pero si que debes subir tu esa fuente a tu servidor .. que el directorio donde la subas tenga permisos de lectura (por lo menos . .prueba de escritura tambien) y que definas la ruta a tus fuentes en tu servidor ..

Cita:
archivo_fuente
La ruta a la fuente TrueType que desea usar.

Dependiendo de la versión de la biblioteca GD que usa PHP, cuando archivo_fuente no comienza con / entonces .ttf se añade al nombre de archivo y la biblioteca intentará buscar ese archivo a lo largo de una ruta de fuentes definida en la biblioteca.

Cuando se usan versiones de la biblioteca GD inferiores a 2.0.18, un caracter de espacio, en lugar de un punto-y-coma, era usado como el 'separador de ruta' para diferentes archivos de fuente. El uso no intencionado de esta característica resulta en el mensaje de advertencia: Warning: Could not find/open font. Para estas versiones afectadas, la única solución es mover la fuente a una ruta que no contenga espacios.

En muchos casos en los que una fuente reside en el mismo directorio que el script que la utiliza, el siguiente truco aliviará los problemas de inclusión.

Código PHP:
<?php
// Definir la variable de entorno para GD
putenv('GDFONTPATH=' realpath('.'));

// Nombre de la fuente a usar (note la falta de la extension .ttf)
$fuente 'AlgunaFuente';
?>
www.php.net/imagettfext

Un saludo,
  #10 (permalink)  
Antiguo 11/11/2005, 10:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Había pensado en que al llamar al archivo (por ej. imas/encabezados/bienvenidos_1024_eng.jpg) que antes de escribirlo verifique si existe el archivo y si no existe que lo genere en esa ruta. La pregunta es si cada vez que se escriba el nombre de archivo el hacer la comprobación de que existe le cuesta mucho al server o por el contrario apenas le cuesta.
Si pudiera hacerlo así, a la hora de cambiar alguna imagen en el collage, bastaría con que eliminara las imágenes actuales para que al no encontrarlas las volviera a crear con la/s imágen/es nueva/s. Así simplemente se crearían a medida que no se encuentren si ha habido algún cambio.
Buena opción para simplificar el proceso .. pero sigues teniendo algo de proceso. A veces lo que más cuesta a un servidor (o PC en cualquiera) es el proceso de acceder al "disco" .. y más si tienes accesos simultáneos que estén comprobando si existe el archivo o no .. tal vez tendrías problemas de "concurrencia"???

Un saludo,
  #11 (permalink)  
Antiguo 11/11/2005, 14:15
 
Fecha de Ingreso: enero-2003
Ubicación: Asunción
Mensajes: 48
Antigüedad: 21 años, 3 meses
Puntos: 1
Gracias. ya me funciona:
El tema esta en subir la fuente con extensión .ttf al servidor dentro del path especificado en la funcion. Esta muy bueno por que puedes subir cualquier fuente ttf rara.

gracias desde ya
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:23.