Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Dividir imagen en tamaño definido

Pues eso amigos, me he basado en lo que hizo el amigo Neftali y tengo esto:
Código PHP:
int ContarDivisionesImagenAnsiString rutaint maxWidthint maxHeight)
{
   
//Solicito memoria para el bitmap que contendrá el concatenado de imagenes
   
Graphics::TBitmap *bmp = new (nothrowGraphics::TBitmap();
   
int divisiones 0;

   if(
bmp != NULL)
   {
      
bmp->LoadFromFile(ruta);

      
int TotalWidth bmp->Width maxWidth;
      
int TotalHeight bmp->Height maxHeight;

      while( 
TotalWidth 0)
      {
         
TotalWidth -= maxWidth;
         
divisiones++;
      }
      while( 
TotalHeight 0)
      {
         
TotalHeight -= maxHeight;
         
divisiones++;
      }
      
delete bmp;
   }else{
      
divisiones = -1;
   }
   return 
divisiones;

El problema que tengo es que no me devuelve el numero de divisiones correcto. ¿que hago mal?
Responder Con Cita
  #2  
Antiguo 15-12-2014
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
Hola, lo que tienes que hacer es dos contadores de divisiones
uno para las divisiones del ancho y otro para el alto.
una vez finalizado el resultado es la multiplicacion de los dos contadores (si uno de los contadores es cero el resultado es el otro contador).

si la imagen es de 100x100 y el maximo es 50x50 los contadores seran 2 de ancho por 2 de alto Resultado = 4
si la imagen es de 100x50 y el maximo es 50x50 los contadores seran 2 de ancho por 0 de alto Resultado = 2
si la imagen es de 100x150 y el maximo es 50x50 los contadores seran 2 de ancho por 3 de alto Resultado = 6
Responder Con Cita
  #3  
Antiguo 15-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
y en tu caso, si la imagen de de 100*45 tendria que darme que es de 2 ¿no?
Responder Con Cita
  #4  
Antiguo 15-12-2014
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
correcto
si la imagen es de 100x45 y el maximo es 50x50 los contadores seran 2 de ancho por 0 de alto Resultado = 2
Responder Con Cita
  #5  
Antiguo 15-12-2014
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
El codigo tiene que quedar así:

Código PHP:
int ContarDivisionesImagenAnsiString rutaint maxWidthint maxHeight)
{
   
//Solicito memoria para el bitmap que contendrá el concatenado de imagenes
   
Graphics::TBitmap *bmp = new (nothrowGraphics::TBitmap();
   
int divisiones 0;
   
int divisionesWidth 0;
   
int divisionesHeight 0;
   if(
bmp != NULL)
   {
      
bmp->LoadFromFile(ruta);

      
int TotalWidth bmp->Width maxWidth;
      
int TotalHeight bmp->Height maxHeight;

      while( 
TotalWidth 0)
      {
         
TotalWidth -= maxWidth;
         
divisionesWidth++;
      }
      while( 
TotalHeight 0)
      {
         
TotalHeight -= maxHeight;
         
divisionesHeight++;
      }
      
delete bmp;
      if 
divisionesHeight != {
           if 
divisionesWidth != {
              
divisiones divisionesHeight divisionesWidth;
          }else {
             
divisiones =  divisionesHeight;  
          }
      }else { 
             
divisiones divisionesWidth;
     }
    
   }else{
      
divisiones = -1;
   }
   return 
divisiones;

Responder Con Cita
  #6  
Antiguo 15-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Bueno ya lo solucioné aunque yo la comprobacion con 0 no la hago ya que la imagen no puede tener 0 ni de ancho ni de alto. Muchas gracias.
Asi quedó la mia:
Código SQL [-]
int ContarDivisionesImagen( AnsiString ruta, int maxWidth, int maxHeight)
{
   //Solicito memoria para el bitmap que contendrá el concatenado de imagenes
   Graphics::TBitmap *bmp = new (nothrow) Graphics::TBitmap();
   int divisionesHeight=0, divisionesWidth=0, divisiones=0;

   if(bmp != NULL)
   {
      bmp->LoadFromFile(ruta);

      int TotalWidth = bmp->Width;
      int TotalHeight = bmp->Height;

      while( TotalWidth > 0)
      {
         TotalWidth -= maxWidth;
         divisionesWidth++;
      }
      while( TotalHeight > 0)
      {
         TotalHeight -= maxHeight;
         divisionesHeight++;
      }
      divisiones = divisionesHeight * divisionesWidth;
      delete bmp;
   }else{
      divisiones = -1;
   }
   return divisiones;
}

Última edición por aguml fecha: 15-12-2014 a las 19:13:13.
Responder Con Cita
  #7  
Antiguo 16-12-2014
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
La comprovación de 0 no es por si la imagen tiene 0 de alto o ancho, es por si el alto o el ancho no se tiene que dividir
si una imagen tiene 75 de ancho y el ancho màximo es 80 el numero de divisiones de ancho sera 0 y si multiplicas por el numero de divisiones del alto, el resultado te va a dar 0.

Código PHP:
if divisionesHeight != {
           if 
divisionesWidth != {
              
divisiones divisionesHeight divisionesWidth;
          }else {
             
divisiones =  divisionesHeight;  
          }
      }else { 
             
divisiones divisionesWidth;
     } 
esta parte evita multiplicaciones con 0
Responder Con Cita
  #8  
Antiguo 16-12-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
si te fijas, en tu ejemplo restabas al principio el ancho y alto maximo y yo no lo hago con lo que como minimo dará 1 y al multiplicar no hay problema.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como subir imagenes de tamaño definido, transparentes o no. PNG, JPG y GIF CniL PHP 1 18-05-2010 02:17:38
Tamaño de papel definido en Windows unit kuan-yiu Impresión 2 01-08-2007 13:28:11
Imprimir con el tamaño definido por el reporte, no de la impresora Alexander Impresión 0 21-07-2005 23:23:28
Imprimir una imagen con un tamaño definido acl_gandalf Impresión 1 15-02-2005 13:51:50
Tamaño de una imagen seduerey Gráficos 8 26-08-2004 09:52:55


La franja horaria es GMT +2. Ahora son las 01:45:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi