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 02-12-2011
_cero_ _cero_ is offline
Miembro
 
Registrado: abr 2007
Posts: 147
Poder: 18
_cero_ Va por buen camino
Thumbs up

Te pongo código a ver qué tal, ahí se ve como redimensionar una imagen y como comprimirla para reducir su tamaño, (aunque si la reduces de dimensiones, por lógica también reduce su tamaño).

Código:
    //Usamos el bmp para redimensionar el jpg
    Graphics::TBitmap* bmp = new Graphics::TBitmap;
    TJPEGImage* jpg = new TJPEGImage;
    jpg->LoadFromFile( "foto.jpg" );
    bmp->Height = 100;
    bmp->Width = 100;
    bmp->Canvas->StretchDraw( bmp->Canvas->ClipRect, jpg );
    jpg->Assign( bmp );
    //Según la compresión varia el tamaño, menor compresión, menor tamaño, pero también menor calidad de la imagen
    jpg->CompressionQuality = 90;
    jpg->Compress();
    jpg->SaveToFile( "c:\\lolo.jpg" );
    delete jpg;
nos vemos.
Responder Con Cita
  #2  
Antiguo 06-12-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Gracias _cero_ el código me funcionó perfecto
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #3  
Antiguo 06-12-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Aquí les dejo el código completo por si a alguien le hace falta

Código:
void __fastcall TForm3::Button1Click(TObject *Sender)
{
 int b;
 String a;

    //Usamos el bmp para redimensionar el jpg
    Graphics::TBitmap* bmp = new Graphics::TBitmap;
    TJPEGImage* jpg = new TJPEGImage;

    //Obtenemos la imagen de un OpenDialog1 en el cual fue previamente abierta
    jpg->LoadFromFile(OpenDialog1->FileName);

     //Asignamos el ancho y largo a partir de dos Edits
    bmp->Width = StrToInt(Edit1->Text);
    bmp->Height = StrToInt(Edit2->Text);

    bmp->Canvas->StretchDraw( bmp->Canvas->ClipRect, jpg );

    jpg->Assign( bmp );

    //Asignamos la compresión a partir de un TrackBar 
    //Según la compresión varia el tamaño, menor compresión, menor tamaño, pero también menor calidad de la imagen
    jpg->CompressionQuality = TrackBar1->Position;
    jpg->Compress();

    //obtener la extension del fichero seleccionado
    b = OpenDialog1->FileName.Length() - 3;
    a = OpenDialog1->FileName.Delete(1,b);
    a = a.LowerCase();

    //Guardamos la imagen
    jpg->SaveToFile("CONVERTIDA-" + IntToStr(Button1->Tag)+ "." + a);
    delete jpg;

    Button1->Tag = Button1->Tag + 1;
}
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #4  
Antiguo 23-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.045
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por FabianSiza Ver Mensaje
Gracias.
Por favor, crea un nuevo hilo con tu consulta, no repitas lo mismo en distintos hilos si no es para responder o aportar algo al hilo existente. Gracias
Responder Con Cita
  #5  
Antiguo 23-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
solo un detalle y que me corrijan si me equivoco. StretchDraw hacia que la imagen perdiera mucha calidad y en su momento, cuando yo me interesé por ese tema, me indicaron otro metodo usando las apis de windows pero ahora mismo no recuerdo como era y tendria que buscar el codigo.
Responder Con Cita
  #6  
Antiguo 24-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
StretchDraw tenia un problema, restaba mucha calidad a las imagenes. En su tiempo, cuando yo me interesé por el tema, me ayudaron a hacerlo de otra forma. Os pongo un enlace con la prueba que hice donde, ademas de poder redimensionarla, tambien se puede exportar a jpg y ademas se puede arrastrar la imagen en el TImage para desplazarnos por ella sin necesidad de scrollbars. Espero que te sirva.

Enlace: https://mega.co.nz/#!NhNBXbKK!mkkwV4...EBErPlElWT0DY8

Última edición por aguml fecha: 24-09-2014 a las 14:15:47.
Responder Con Cita
  #7  
Antiguo 24-09-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
una cosa mas, creo recordar que el objeto TJPEJImage tiene una funcion para redimensionar el jpg (creo que era resize o algo asi) pero ya para para hacerlo por tamaño en bytes no se.
Responder Con Cita
  #8  
Antiguo 24-09-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Ya que se reabre este tema, voy a aportar una solución usando GDI+ que no tiene el inconveniente de la pérdida de calidad clásica de Stretch y usa HBITMAP con lo que se puede usar con cualquier formato de compresión. Podéis ver el código en C y delphi en este enlace: Redimensionar una imagen con GDI+ flat API.

Saludos.
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
¿Cómo cambiar tamaño una imagen después de cargarla? Master23 Varios 4 03-08-2010 18:37:58
¿Como cambiar el tamaño a una imagen? flystar Varios 1 22-04-2010 19:23:51
como saber y cambiar el tamaño a una imagen Negriz C++ Builder 10 09-06-2008 00:00:21
Cambiar tamaño de una imagen antes de guardar en una bd chux Gráficos 6 28-11-2006 11:58:58
Cambiar el tamaño de una imagen inter_mercadeo Gráficos 2 25-02-2005 17:43:54


La franja horaria es GMT +2. Ahora son las 14:09:18.


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