Foros del Web » Programando para Internet » PHP »

Redimensionar imagen respetando aspecto original

Estas en el tema de Redimensionar imagen respetando aspecto original en el foro de PHP en Foros del Web. Hola, He insertado un mod para mis foros phpBB y lo que hace es redimensionar las imagenes que se excedan de un determinado tamaño. Pero ...
  #1 (permalink)  
Antiguo 13/02/2006, 05:48
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Redimensionar imagen respetando aspecto original

Hola,

He insertado un mod para mis foros phpBB y lo que hace es redimensionar las imagenes que se excedan de un determinado tamaño. Pero la cosa es que debo establecer el ancho y el alto máximos y si se sobrepasa redimensiona las imagenes...

En realidad no quiero tocar el alto de las imagenes pero el problema es que redimensiona el ancho y el alto lo deja original con lo cual las imagenes quedan fatal.

esta es la parte del script que modifica el bbcode y establece la redimension:

Código PHP:
// iMinimize_MOD - start
function getsize($url){
// Maximum width and height for inpost images (yo puse el 0.. para probar pero no va)
    
$iWidth 350;
    
$iHeight 0;
// Change $broken_link to whatever you want. Remember that it's placed between [img][/img]
    
$broken_link 'http://www.mindpanic.com/images/broken_link.gif'

    if(@!
$size GetImageSize($url))
    {
        if( !empty(
$broken_link) ) return $broken_link;
        else return 
$url;
    }


    if ( isset(
$size) )
    {

        if( 
$size[0] > $iWidth )
        {
            
$Resized 'true';
        }
        else
        {
            
$iWidth $size[0];
        }

        if( 
$size[1] > $iHeight )
        {
            
$Resized 'true';
        }
        else
        {
            
$iHeight $size[1];
        }

        if ( isset(
$Resized) )
        {
            
$iUrl "[" $iWidth ":" $iHeight "]" $url;
        }
        else
        {
            
$iUrl $url;
        }

        return 
$iUrl;
    }
    else
    {

        if( !empty(
$broken_link) ) return $broken_link;
        else return 
$url;
    }
}
// iMinimize_MOD - end 
¿¿¿como hago para que redimensione pero guarde el aspecto original cambiando la vez de forma porporcinal en alto de la imagen???

Saludos.
  #2 (permalink)  
Antiguo 13/02/2006, 06:17
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
lo he modificado y ahora no muestra las imagenes que deberia redimensionar:

he modificado dejandolo asi:
Código PHP:
// iMinimize_MOD - start
function getsize($url){
    
    
// Maximum width and height for inpost images
    
$iWidth 350;
    
// Change $broken_link to whatever you want. Remember that it's placed between [img][/img]
    
$broken_link 'http://www.mindpanic.com/images/broken_link.gif'

    if(@!
$size GetImageSize($url))
    {
        if( !empty(
$broken_link) ) return $broken_link;
        else return 
$url;
    }


    if ( isset(
$size) )
    {

        if( 
$size[0] > $iWidth )
        {
            
$Resized 'true';
        }
        else
        {
            
$iWidth $size[0];
        }

        if ( isset(
$Resized) )
        {
            
$iUrl "[" $iWidth "]" $url;
        }
        else
        {
            
$iUrl $url;
        }

        return 
$iUrl;
    }
    else
    {

        if( !empty(
$broken_link) ) return $broken_link;
        else return 
$url;
    }
}
// iMinimize_MOD - end 
y tambien he tocado otra parte del codigo que inserte en el mismo archivo (bbcode.php)

ORIGINAL (al insertar mod)
Código PHP:
    // iMinimize_MOD - start
    
$bbcode_tpl['img2'] = str_replace('{iSize}''width="\\1" height="\\2"'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{URL}''\\3'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_RESIZED}',$lang['Resized'],$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_OPEN_IN_NEW_WINDOW}',$lang['In_New_Window'],$bbcode_tpl['img2']);
    
// iMinimize_MOD - end 
MODIFICADO POR MI
Código PHP:
    // iMinimize_MOD - start
    
$bbcode_tpl['img2'] = str_replace('{iSize}''width="\\1"'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{URL}''\\3'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_RESIZED}',$lang['Resized'],$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_OPEN_IN_NEW_WINDOW}',$lang['In_New_Window'],$bbcode_tpl['img2']);
    
// iMinimize_MOD - end 
las imagenes que no son redimensionadas salen bien y dan una URL directa a la imagen al ver el codigo, pero las redimensionadas ya no salen desde que lo he modificado y dan una URL asi:
Código HTML:
http://www.mindpanic.com/foros/%5B350%5Dhttp://www.web_de_la_imagen.jpg
¿Como puedo hacer que redimensione solo con with y ademas que funcione... es que desde que elimine el height no muestra las imagenes.... podria volver a dejarlo como antes.. pero quiero solucionar el problema de el redimensionamiento para que cuando la gente añada imagenes no me desplacen el foro.

saludos
  #3 (permalink)  
Antiguo 13/02/2006, 07:25
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Quizas no me he explicado bien, lo que busco es que solo redimensione el ancho tipo:
Código HTML:
<img src="xxxxxx.com" with="350"> 
para asi obtener imagenes vusialmente adecuadas y sin deformaciones.

el script no funciona como deseo por que guarda los valores del alto. por ejemplo si tengo una imagen de 500 x 800 y el script me redimensiona el ancho a 350 pixeles resulta que mantiene el alto a 800 asi:

Código HTML:
<img src="xxxxxx.com" with="350" height="800"> 
con lo cual la imagen sale fatal... estrecha y demasiado alta.

LO que quiero es eliminar el atributo height del script, pero lo he intentado quitar y algo he hecho mal por que ahora no salen las imagenes ya que deja una url como esta:
Código HTML:
[url]http://www.mindpanic.com/foros/%5B350%5Dhttp://www.web_de_la_imagen.jpg[/url]
si os fijais en la url que muestra hay una parte que pone esto %5B350D y yo creo que lo que pasa es que toma el valor del ancho pero muestra mal la url... no entiendo muy bien por que... ¿donde esta el fallo en el script despues de mi modificación?

saludos
  #4 (permalink)  
Antiguo 13/02/2006, 07:58
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
SOLUCIONADO

solo tuve que hacer esto:
Código PHP:
// iMinimize_MOD - start
    
$bbcode_tpl['img2'] = str_replace('{iSize}''width="\\1" height="\\2"'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{URL}''\\3'$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_RESIZED}',$lang['Resized'],$bbcode_tpl['img2']);
    
$bbcode_tpl['img2'] = str_replace('{L_OPEN_IN_NEW_WINDOW}',$lang['In_New_Window'],$bbcode_tpl['img2']);
    
// iMinimize_MOD - end 
elimine de ese codigo el atributo height="\\2" y asi ya me redimensiona dejando el alto adecuado para que las imagenes se vean perfectas....

saludos.
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 14:58.