Foros del Web » Programando para Internet » PHP »

GD e imagecreate

Estas en el tema de GD e imagecreate en el foro de PHP en Foros del Web. Saludos, He estado modificando un script para galeria de imagenes llamado " Gallery Thingie version 1.1 " (me daba pereza desarrollarlo y este es muy ...
  #1 (permalink)  
Antiguo 17/12/2003, 11:07
 
Fecha de Ingreso: junio-2003
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
GD e imagecreate

Saludos,

He estado modificando un script para galeria de imagenes llamado " Gallery Thingie version 1.1 " (me daba pereza desarrollarlo y este es muy completo para mis necesidades, controla todos los errores, etc..

El caso es que este script usa la libreria GD 2.0 o superior con el fin de crear automaticamente los thubnails de las imagenes, en el caso de detectar que existe la funcion imagecreatetruecolor de la version 2 o superior la usa y si no usa createimage, que crea una imagen basada en una paleta.
Aqui viene mi problema, al crearme un thubnail con createimage,(desgraciadamente mi hosting no tiene aun el GD 2.0 o superior porque usan no se que distribucion de REDHAT), pues la imagen que me crea es completamente negra.

ver ejemplo de thubnail negro con la foto de donde se saco:
http://www.patriciafernandez.net/fotos.php

alguien sabe como puedo subsanar esto?


GRACIAS
  #2 (permalink)  
Antiguo 17/12/2003, 12:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si pones el código que usas .. tal vez alguíen vea el errro y/o lo pueda probar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 17/12/2003, 12:41
 
Fecha de Ingreso: junio-2003
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
bien, veamos... parte del codigo, la que hace eso precisamente:

************************************************** **
function createThumbnail($orgimg, $thumbnailwidth, $thumbnailquality) {
global $path;
$thumbpath = "{$path}thumbs/{$orgimg}";
$orgimg = "{$path}{$orgimg}";
$error = 0;
if (function_exists('imagecreate') && function_exists('imagecopyresized')) {
// Check if thumbnail directory exists. If not try to create it.
if (!is_dir("{$path}thumbs")) {
$oldumask = umask(0);
if (@!mkdir("{$path}thumbs", 0777)) {
$error = "Thumbnail directory could not be created.";
}
umask($oldumask);
}
// Get file size and file type.
if ($error == 0) {
if (!$size = @getimagesize($orgimg)) {
$error = "Size of original image could not be calculated.";
}
}
// Create link to old image.
if ($error == 0) {
switch ($size[2]) {
case 1 :
if (function_exists('imagecreatefromgif')) {
$img = @imagecreatefromgif($orgimg);
if ($img == "") {
$error = "Could not open link to original image.";
}
} else {
$error = "Could not open link to original image.";
}
break;
case 2 :
if (function_exists('imagecreatefromjpeg')) {
$img = @imagecreatefromjpeg($orgimg);
if ($img == "") {
$error = "Could not open link to original image.";
}
} else {
$error = "Could not open link to original image.";
}
break;
case 3 :
if (function_exists('imagecreatefrompng')) {
$img = @imagecreatefrompng($orgimg);
if ($img == "") {
$error = "Could not open link to original image.";
}
} else {
$error = "Could not open link to original image.";
}
break;
default :
$error = "Cannot create thumbnail. Original image is of an unsupported type.";
break;
}
}
// Calculate the dimensions of the new image.
if ($error == 0) {
if (!strstr($thumbnailwidth, "%")) {
if($size[0] > $size[1]) {
$ratio = $size[0]/$thumbnailwidth;
$height = $size[1]/$ratio;
$height = round($height);
$width = $size[0]/$ratio;
} else {
$ratio = $size[1]/$thumbnailwidth;
$width = $size[0]/$ratio;
$width = round($width);
$height = $size[1]/$ratio;
}
} else {
$ratio = str_replace("%", "", $thumbnailwidth)/100;
$width = round($size[0]*$ratio);
$height = round($size[1]*$ratio);
}
}
// Create new image (true colour if available).
if ($error == 0) {
if (function_exists('imagecreatetruecolor')) {
$newimg = imagecreatetruecolor($width, $height);
} else {
$newimg = imagecreate($width, $height);
}
}
// Resample old image over new image.
if ($error == 0) {
if(!function_exists('imagecopyresampled') || !function_exists('imagecreatetruecolor')) {
if ([email protected]($newimg, $img, 0, 0, 0, 0, $width, $height, $size[0], $size[1])) {
$error = "Could not resize image.";
}
} else {
if ([email protected]($newimg, $img, 0, 0, 0, 0, $width, $height, $size[0], $size[1])) {
$error = "Could not resample image.";
}
}
}
// Make the thumbnails, and save files.
if ($error == 0) {
switch ($size[2]) {
case 1:
if ([email protected]($newimg, $thumbpath)) {
$error = "Could not save thumbnail.";
}
break;
case 2:
if ([email protected]($newimg, $thumbpath, $thumbnailquality)) {
$error = "Could not save thumbnail.";
}
break;
case 3:
if ([email protected]($newimg, $thumbpath)) {
$error = "Could not save thumbnail.";
}
break;
default :
$error = "Could not create thumbnail. Image type not supported.";
}
}
// Destroy image both links.
@imagedestroy($newimg);
@imagedestroy($img);
} else {
$error = "Image functions not available for thumbnail.";
}
return $error;
}


************************************************** **
Como podras ver el autor cubre muchas opciones, por eso no me puse a desarrollar uno, sino que cogi ese y lo modifique. Esa funcion y ninguna relacionada estan modificadas.

Por cierto cluster, gracias a tus muchisimas aportaciones al foro he podido hacer esto:
http://www.patriciafernandez.net/enlaces.php
sin preguntar ni una sola vez :D GRACIAS

Última edición por Surt; 17/12/2003 a las 12:52
  #4 (permalink)  
Antiguo 17/12/2003, 12:48
 
Fecha de Ingreso: junio-2003
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
Bien, para que nadie se agobie os explico:

Casi todo es irrelevante, la funcion me hace un resize de la imagen, y la graba a true color o a imagen mediante paleta:

// Create new image (true colour if available).
if ($error == 0) {
if (function_exists('imagecreatetruecolor')) {
$newimg = imagecreatetruecolor($width, $height);
} else {
$newimg = imagecreate($width, $height);
}
}
ese trozo de codigo "crea" la imagen a paleta en mi caso, cuando la crea en truecolor en mi servidor local y en otro alquilado funciona perfectamente. Sin embargo donde lo he colgado ahora tengo el problema de que imagecreate (hace la imagen con paleta de colores limitada) me pone la imagen en negro, quizas por las caracteristicas de la misma.. el error no esta en el codigo, pues usa funciones de librerias GD, el problema es que mis fotos no funcionan bien al grabarlas como paleta de imagenes....

Umm me temo que es un mensaje para alguien que controle GD, no es de codigo en si, sino de posibilidades de este...

Última edición por Surt; 17/12/2003 a las 12:52
  #5 (permalink)  
Antiguo 17/12/2003, 15:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo me inclino por problemas de la versión de las GD .. usas imagenes de mucha profundidad de color (16 M colores .. truecolor) y se ha de quedar todo a 256 colores .. (son suposiciones .. no sé técnicamente como funciona).

Has probado con imagenes de 256 colores? a ver como te crea los thumbnails?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/12/2003, 04:06
 
Fecha de Ingreso: junio-2003
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
ummm, debe ser eso, que al crear la paleta se le va la olla. Les he pedido que si tienen la opcion que pongan la GD 2 o superior...pero ellos introducen el paquete REDHAT y no le cambian un pelo. :(
Con 256 se me quedaria la imagen grande feilla me temo y la galeria gusta a buena calidad.... creo que no tengo alternativa.
  #7 (permalink)  
Antiguo 18/12/2003, 12:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Jeje .. Cambia de servicio de hosting .. es la mejor "presión" que puedes hacer. Hoy por hoy PHP es muy solicitado y .. los "srs" de los sevicios de hosting tienen que estar al día.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 18/12/2003, 13:11
 
Fecha de Ingreso: junio-2003
Mensajes: 33
Antigüedad: 14 años, 5 meses
Puntos: 0
pufff es que en este el pago va por adelantado. he pagado por 4 años pensando que seria bueno, pintaba bien.... es tusprofesionales, pero no se si sera que no tienen muchos clientes que usen php a fondo o no se que.. :(
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 18:58.