Foros del Web » Programando para Internet » PHP »

manipulacion de imagenes

Estas en el tema de manipulacion de imagenes en el foro de PHP en Foros del Web. Mi consulta es la siguiente, estoy tomando una imagen desde la base de datos la misma esta en formato binario, puedo ver la imagen lo ...
  #1 (permalink)  
Antiguo 19/02/2003, 07:48
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
manipulacion de imagenes

Mi consulta es la siguiente, estoy tomando una imagen desde la base de datos la misma esta en formato binario, puedo ver la imagen lo mas bien. Pero el problema es que no puedo recuperar el alto y el ancho de la imagen, ya que al guardar las imagenes PNG en la base de datos no hay un campo por extencion ni por tamaño.
Bueno yo utilizo SQL Server con PHP4.21, y pude manipular imagenes sin problema. Pero a la hora de tomar las imagenes desde la base
¿Como puedo recuperar el alto y ancho de la imagen para la manipulacion de la misma.?
desde ya muchas gracias
Saludos
  #2 (permalink)  
Antiguo 19/02/2003, 09:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si necesitabas ese dato .. sería mejor q creases un par de campos extra en tu tabla de imagenes y los guardases .. sobre todo para no estar recalculando siempre esos datos si son fijos.

Con getimagesize() se obtiene el tamaño de una imagen (almacenada en disco) .. ideal para obtener esos datos de alto y ancho a la hora de hacer tu "upload" hacia tu BD .. (te entrega un array con ancho elemento 0 $imageInfo[0] y elemento 1 alto (y un 3er elemento con la profundicad de color de la imagen en bits)

$imageInfo = getimagesize($filename);

De todas formas .. si ya tienes el "resource" de la imagen (si ya has hecho tu $img=imagecreatefromxxxx )

Puedes usar:
imagesx($img) e imagesy($img)

Un saludo,
  #3 (permalink)  
Antiguo 19/02/2003, 10:30
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Te agradezco Cluster ya havia utilizado ese recurso en este caso por ejemplo

<?php
//////////////////////////////
// * imagen a reducir src * //
//////////////////////////////

// $nombreimagen = "firma.png";
// $imgsrc = imagecreatefrompng($nombreimagen);

// se obtienen las dimensiones de la imagen
$srcx = imagesx($imgsrc);
$srcy = imagesy($imgsrc);

/////////////////////////////////
// * plantilla en blanco trg * //
/////////////////////////////////

$x_size = 50;
$y_size = 40;
$imgtrg = imagecreate ( $x_size, $y_size);

$facx = $x_size / $srcx;
$facy = $y_size / $srcy ;

if($facx < $facy)
$facred=$facx;
else
$facred =$facy;

$resx = $srcx * $facred;
$resy = $srcy * $facred;

imagecopyresized($imgtrg, $imgsrc, 0, 0, 0, 0, $resx - 1, $resy - 1,
$srcx - 1, $srcy - 1);

header("content-type: image/png");
imagepng($imgtrg);
imagedestroy($imgtrg);
imagedestroy($imgsrc);


?>
Pero a la hora de tomar la imagen de la url por ejemplo

//////////////////////////////
// * imagen a reducir src * //
//////////////////////////////
include("./url_image.php");
$imgURL = 'http://Miserver/phptest/url_image.php?recno=14';

No puedo tomar el alto y el ancho ya sea por que no tengo los campos en la base de datos pero tendria que scanear todas las imagenes nuevamente y modificar la base de datos, eso seria de loco es por eso que pregunto si no hay otra solucion.
desde ya muchas gracias
  #4 (permalink)  
Antiguo 19/02/2003, 10:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Supongo q para obtener tu imagen de tu BD haras alguna consulta tipo:

Código PHP:
$data = @MYSQL_RESULT($resultexe,0,"imagen");
$type = @MYSQL_RESULT($resultexe,0,"filetype");

Header"Content-type: $type");
echo 
$data
Podrias probar:

$srcx = imagesx($data);
$srcy = imagesy($data);

Si no funciona ya te dará algun error de "tipos" de datos en las funciones imagesX e Y ...

<opcion>
Tambien podrias hacerte un simple script q lea las imagenes de tu BD actual y cree registros nuevos con los datos de ancho/alto junto con los otros datos q tengas .. Tan solo son unos SELECT .. leer los datos de ancho/alto y un INSERT con los valores de los campos de esa tabla + estos datos nuevos .. De forma automatica lo harías rápido.
</opcion>

Un saludo,
  #5 (permalink)  
Antiguo 19/02/2003, 13:43
Avatar de Chuty  
Fecha de Ingreso: noviembre-2002
Ubicación: el bar de la esquina
Mensajes: 609
Antigüedad: 15 años, 1 mes
Puntos: 2
Cluster Gracias por la ayuda ah logrado tomar el ancho, alto y tipo de imagen de mi base de datos sin tener que modificar la misma, como te mencione anteriormete yo utilizo SQL Server con PHP y las imagenes estan guardadas en formato Binario.
Ahi va el codigo para que lo veas funciona bien.

<HTML>
<HEAD>
<TITLE>Propiedades de los gráficos</TITLE>
</HEAD>
<BODY>
<TABLE BORDER=3 ALIGN='CENTER'>
<CAPTION ALIGN='BOTTOM'>
Propiedades de la imagen
</CAPTION>
<TR>
<TD COLSPAN=2 ALIGN='CENTER'>
<?php

if (!isset($nombreimagen))
$nombreimagen = 'http://Miserver/phptest/url_image.php?recno=15';

echo "<IMG SRC='$nombreimagen'>";
echo "</TD>\n";
echo "</TR>\n";

/* ejemplo para ver las propiedades de la imagen que se
pasa como parámetro a la función */
$tamanio = getimagesize($nombreimagen);
echo "<TR>";
echo "<TD ALIGN='RIGHT'>Ancho:</TD>";
echo "<TD ALIGN='CENTER'>$tamanio[0]</TD>";
echo "</TR>";
echo "<TR>";
echo "<TD ALIGN='RIGHT'>Alto:</TD>";
echo "<TD ALIGN='CENTER'>$tamanio[1]</TD>";
echo "</TR>";
echo "<TR>";
echo "<TD ALIGN='RIGHT'>Tipo:</TD>";
echo "<TD ALIGN='CENTER'>";
switch ($tamanio[2])
{
case 1: echo "Es una imagen GIF";
break;
case 2: echo "Es una imagen JPG";
break;
case 3: echo "Es una imagen PNG";
}
echo "</TD>";
echo "</TR>";
echo "<TR>";
echo "<TD ALIGN='RIGHT'>General:</TD>";
echo "<TD ALIGN='CENTER'>$tamanio[3]</TD>";
echo "</TR>";
?>

</TABLE>
</BODY>
</HTML>

Ahora lo que me queda por hacer es poder reducir la misma a un tamaño especificado.
Saludos
  #6 (permalink)  
Antiguo 21/09/2003, 10:37
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 14 años, 7 meses
Puntos: 9
Multiplica la altura y la anchura por .5 para que quede al 50% por ejemplo
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 13:58.