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
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
cambiar tamaño de imagen jpg

hola amigos

Tengo una form donde cargo una imagen en un DBImage, anteriormente habia preguntado como cargar un jpg ahora lo que necesito es saber como redimensionar este jpg o sea cambiar el tamaño de la imagen en pixeles ejemplo de 800x600 a 100x100 y el tamaño en fisico ejemplo de 500 Kb a 150Kb.

les dejo el código para que le hechen un ojo

Gracias de antemano

Código:
 
if(OpenDialog1->Execute())
{
	if (OpenDialog1->FileName == "")
	{
	  if (OpenDialog1->FileName == "")
	  {
			MessageDlg("Operación cancelada" , mtInformation, TMsgDlgButtons() << mbOK, 0);
	  }
	  else
	  {
			//obtener la extension del fichero seleccionado
			b = OpenDialog1->FileName.Length() - 3;
			a = OpenDialog1->FileName.Delete(1,b);
			a = a.LowerCase();

			if (a == "bmp" || a == "BMP")
			{
					DBImage1->Picture->LoadFromFile(OpenDialog1->FileName);
			}

			if (a == "jpg" || a == "jpeg" || a == "JPG" || a == "JPEG")
			{
				// Carga en memoria el fichero
				jpg->LoadFromFile(OpenDialog1->FileName);

				//convertir
				bmp->Assign(jpg);

				//poner convertido en la imagen
				DBImage1->Picture->Assign(bmp);

				//limpiar memoria
				delete jpg;
				delete bmp;
			}
	   }
	}
}	
	   
TFileStream *File = new TFileStream(OpenDialog1->FileName, fmOpenRead);
if (File->Size >= 600000)
{
			MessageDlg("La imagen es demasiado grande, debe ser menor de 600000 bytes y su tamaño actual es " + IntToStr(File->Size) + " bytes", mtError, TMsgDlgButtons() << mbOK, 0);
			delete File;
}
else
{
				 ADOQuery2->Post();
}
__________________
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_
________________________________________________________________________________

Última edición por lmpadron fecha: 02-12-2011 a las 17:22:25.
Responder Con Cita
  #2  
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
  #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
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
  #4  
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
  #5  
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.052
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
  #6  
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
  #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
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
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 02:23:17.


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