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
![Neurótico](http://static.forosdelweb.com/fdwtheme/images/smilies/scared.png)
¿Como puedo recuperar el alto y ancho de la imagen para la manipulacion de la misma.?
desde ya muchas gracias
Saludos
| |||
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, |
| ||||
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 |
| |||
Supongo q para obtener tu imagen de tu BD haras alguna consulta tipo: Código PHP: $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, |
| ||||
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 |
| ||||
Multiplica la altura y la anchura por .5 para que quede al 50% por ejemplo
__________________ Think. Nuevas formas de comunicación |