Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Cuando haces esto:
Código Delphi [-]
UniQueryIMG.ParamByName('FOTO').Assign(Image4.bitmap);

Convierte antes la image del componente TImage a JPG o a PNG (ambos formatos con compresión).
Para eso puedes encontrar muchos códigos en los foros.
Efectivamente pero debo cambiar el formato
Código Delphi [-]
UniQueryIMG.ParamByName('FOTO').Assign(Image4.jpeg);
o
UniQueryIMG.ParamByName('FOTO').Assign(Image4.picture);[/delphi]
para poder hacer eso debo colocar en el uses el 'JPEG' pero me da error al parecer no lo reconoce o me falta algun componente.


al agregar el jpeg en uses me da error de "f2063 could not compile used unit 'jpeg'"
Responder Con Cita
  #2  
Antiguo 10-01-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Debes convertir la imagen que hay en el TImage.
Aquí tienes una función para hacerlo en FMX:
https://stackoverflow.com/questions/...eg-compression
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Debes convertir la imagen que hay en el TImage.
Aquí tienes una función para hacerlo en FMX:
https://stackoverflow.com/questions/...eg-compression

cualquiera de los métodos que valla aplicar requiere que coloque en el uses el JPEG y es allí donde estoy teniendo problema (adjunto imagen de Error)

Última edición por giantonti1801 fecha: 29-03-2023 a las 20:43:36.
Responder Con Cita
  #4  
Antiguo 10-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Debes convertir la imagen que hay en el TImage.
Aquí tienes una función para hacerlo en FMX:
https://stackoverflow.com/questions/...eg-compression
Como puedo aplicar este código a mi proyecto ya que la imagen la tengo en IMAGE1.BITMAP
Código Delphi [-]
var
  NewBitmap: TBitmap;
  MS1 : TMemoryStream;
  Surf: TBitmapSurface;
  JpgQuality : TBitmapCodecSaveParams;
begin
  NewBitmap := TBitmap.CreateFromFile('input.bmp');
  MS1 := TMemoryStream.Create;
  Surf := TBitmapSurface.create;

  try
    MS1.Position := 0;
    Surf.Assign(NewBitmap);
    JpgQuality.Quality := 100;

    if not TBitmapCodecManager.SaveToStream(MS1, Surf, '.jpg', @JpgQuality) then
      raise EBitmapSavingFailed.Create('Error saving Bitmap to jpg');

    MS1.SaveToFile('ouput.jpg');
  finally
    NewBitmap.Free;
    MS1.Free;
    Surf.Free;
  end;
end;

ya logre solucionar el problema que tenía con el JPEG tuve que agregar estos USES
Código Delphi [-]
System.ImageList, FMX.Surfaces
Responder Con Cita
  #5  
Antiguo 10-01-2023
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Te aconsejo que para que ocupe menos la imagen la comprimas más, en lugar de:
Código Delphi [-]
JpgQuality.Quality := 100;
Puedes poner, ejemplo:
Código Delphi [-]
JpgQuality.Quality := 70;
En una imagen de 2560x1400 en jpg que ocupa 1,1 MB, si se guarda con compresión 70 entonces ocupa 171 KB




Responder Con Cita
  #6  
Antiguo 10-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Me parece excelente pero donde coloco esta función en mi código?

Última edición por Casimiro Noteví fecha: 10-01-2023 a las 19:02:38.
Responder Con Cita
  #7  
Antiguo 10-01-2023
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por giantonti1801 Ver Mensaje
Me parece excelente pero donde coloco esta función en mi código?
Código Delphi [-]
var
  NewBitmap: TBitmap;
  MS1 : TMemoryStream;
  Surf: TBitmapSurface;
  JpgQuality : TBitmapCodecSaveParams;
begin
  NewBitmap := TBitmap.CreateFromFile('input.bmp');
  MS1 := TMemoryStream.Create;
  Surf := TBitmapSurface.create;

  try
    MS1.Position := 0;
    Surf.Assign(NewBitmap);
    JpgQuality.Quality := 100;   //   <<<-------------  ¡¡¡ AQUÍ !!!   

    if not TBitmapCodecManager.SaveToStream(MS1, Surf, '.jpg', @JpgQuality) then
      raise EBitmapSavingFailed.Create('Error saving Bitmap to jpg');

    MS1.SaveToFile('ouput.jpg');
  finally
    NewBitmap.Free;
    MS1.Free;
    Surf.Free;
  end;
end;
Responder Con Cita
  #8  
Antiguo 10-01-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Código Delphi [-]
var
  NewBitmap: TBitmap;
  MS1 : TMemoryStream;
  Surf: TBitmapSurface;
  JpgQuality : TBitmapCodecSaveParams;
begin
  NewBitmap := TBitmap.CreateFromFile('input.bmp');
  MS1 := TMemoryStream.Create;
  Surf := TBitmapSurface.create;

  try
    MS1.Position := 0;
    Surf.Assign(NewBitmap);
    JpgQuality.Quality := 100;   //   <<<-------------  ¡¡¡ AQUÍ !!!   

    if not TBitmapCodecManager.SaveToStream(MS1, Surf, '.jpg', @JpgQuality) then
      raise EBitmapSavingFailed.Create('Error saving Bitmap to jpg');

    MS1.SaveToFile('ouput.jpg');
  finally
    NewBitmap.Free;
    MS1.Free;
    Surf.Free;
  end;
end;
No hay manera de hacerlo de esta forma. El problema radica que yo estoy tomando una con el dispositivo movil y lo estoy guardando un IMAGE1.BITMAP luego aunque en diversos intentos es tomar la foto ya convertida en el
Código Delphi [-]
MS1 := TMemoryStream.Create;
y pasarla a la base de datos pero no lo he logrado
Código Delphi [-]
uniQueryIMGFOTO.LoadFromStream(MS1);
esta puede ser mi única alternativa. hay que tomar en cuenta que todo se está realizando en un dispositivo movil Antroid/Ios.

Código Delphi [-]
procedure TFormPrincipalTab.Timer_FINTimer(Sender: TObject);
var
Image: TBitmap;
bmp: TBitmap;
NewBitmap: TBitmap;
MS1 : TMemoryStream;
Surf: TBitmapSurface;
JpgQuality : TBitmapCodecSaveParams;
begin
  LabelCuentaRegresiva.Text := '0';
  Timer_N1.Enabled := false;
  LabelCuentaRegresiva.Visible := false;
  cancel := false;
  SetupSoundFoto('camara_51.mp3');
  PlaySoundFoto;
  {$IFDEF ANDROID}
  CameraComponent1.SampleBufferToBitmap(Image4.Bitmap, true);
  CameraComponent1.Active := false;
  {$ENDIF}
  begin
   NewBitmap := image4.bitmap;//TBitmap.CreateFromFile('input.bmp');
   MS1 := TMemoryStream.Create;
   Surf := TBitmapSurface.create;
   try
   MS1.Position := 0;
   Surf.Assign(NewBitmap);
   JpgQuality.Quality := 70;
     if not TBitmapCodecManager.SaveToStream(MS1, Surf, '.jpg', @JpgQuality) then
     raise EBitmapSavingFailed.Create('Error saving Bitmap to jpg');
     MS1.SaveToFile('ouput.jpg');

       begin
          if Label26.Text = 'InExistente' then
            begin
             LabelNumeroDpto.Text := labelDpto.Text;
             LabelNombreVis.Text := Edit1.Text;
                begin
                UniQueryVisitantesVal.Close;
                UniQueryVisitantesVal.SQL.Clear;
                UniQueryVisitantesVal.SQL.Add('INSERT INTO visitantes (Nom_Vis,Apell_Vis,Rut_Vis,Foto,Num_dep_Vis,Edif_vis,Estatus,Usuario_mod,)');           //
                UniQueryVisitantesVal.SQL.Add('VALUES (:Nom_Vis, :Apell_Vis, :Rut_Vis, :Foto, :Num_dep_Vis, :Edif_vis, :Estatus, :Usuario_mod, )');                      //,
                UniQueryVisitantesVal.ParamByName('Nom_vis').AsString := LabelNombreVis.text;
                UniQueryVisitantesVal.ParamByName('Rut_Vis').AsString := LabelRutVis.Text;
                UniQueryVisitantesVal.ParamByName('Num_dep_Vis').Asstring := LabelNumeroDpto.text;
                UniQueryVisitantesVal.ParamByName('Edif_vis').AsString := LabelEdificio.text;
                UniQueryVisitantesVal.ParamByName('Estatus').AsString := 'ACT';
                UniQueryVisitantesVal.ParamByName('Usuario_mod').Asstring := 'TOTEM';
                //UniQueryVisitantesVal.ParamByName('otro').Asstring := 'E';
                UniQueryVisitantesVal.ExecSQL;
                   begin
                   UniQueryIMG.Close;
                   UniQueryIMG.SQL.Clear;
                   UniQueryIMG.SQL.Add('UPDATE IMG SET FOTO = :FOTO, OTRO1 = :OTRO1, MODULO = :MODULO where OTRO1  = ''I'' and MODULO = ''VISITANTES''');
                   UniQueryIMG.ParamByName('OTRO1').AsString := '';
                   UniQueryIMGFOTO.LoadFromFile('Ouput.jpg');
                   uniQueryIMGFOTO.LoadFromStream(MS1);
                   UniQueryIMG.ExecSQL;
                   end;

                      begin
                      UniQueryVisitasIngreso.Close;
                      UniQueryVisitasIngreso.SQL.Clear;
                      UniQueryVisitasIngreso.SQL.Add('INSERT INTO visitas (Nom_Vis,Apell_Vis,Rut__Vis,Foto,Num_dep_Vis,Piso__Vis,Edif_Vis,Hora_In_Vis, Num_Vis,Usuario_mod,otro)');           //
                      UniQueryVisitasIngreso.SQL.Add('VALUES (:Nom_Vis, :Apell_Vis, :Rut__Vis, :Foto, :Num_dep_Vis, :Piso__Vis, :Edif_Vis, :Hora_In_Vis, :Num_Vis, :Usuario_mod, tro)');                      //,
                      UniQueryVisitasIngreso.ParamByName('Nom_vis').AsString := LabelNombreVis.text;
                      UniQueryVisitasIngreso.ParamByName('Rut__Vis').AsString := LabelRutVis.Text;
                      UniQueryVisitasIngreso.ParamByName('Num_dep_Vis').Asstring := LabelNumeroDpto.text;
                      UniQueryVisitasIngreso.ParamByName('Piso__Vis').AsString := LabelPisoINF.text;
                      UniQueryVisitasIngreso.ParamByName('Edif_Vis').AsString := LabelEdificio.text;
                      UniQueryVisitasIngreso.ParamByName('Hora_In_Vis').AsDateTime := Now;
                      UniQueryVisitasIngreso.ParamByName('Num_Vis').AsString := 'XXX';
                      UniQueryVisitasIngreso.ParamByName('Usuario_mod').Asstring := 'TOTEM';
                      UniQueryVisitasIngreso.ParamByName('otro').Asstring := 'E';
                      UniQueryVisitasIngreso.ExecSQL;
                      end;

                        begin
                        UniQueryIMG.Close;
                        UniQueryIMG.SQL.Clear;
                        UniQueryIMG.SQL.Add('UPDATE IMG SET FOTO = :FOTO, OTRO1 = :OTRO1 where OTRO1  = ''I'' and MODULO = ''VISITAS''');
                        UniQueryIMG.ParamByName('OTRO1').AsString := '';
                        uniQueryIMGFOTO.LoadFromStream(MS1);
                        UniQueryIMG.ExecSQL;
                        end;
                end;
             TabControl1.ActiveTab := TblEspera;
             LayoutEspera.Visible := true;
             FloatAnimation7.Enabled := true;
             Timer1.Enabled := true;
             Timer_fin.Enabled := false;
            end
      // end
            else
             begin
                LabelNumeroDpto.Text := labelDpto.Text;
                LabelNombreVis.Text := Edit1.Text;
                begin
                UniQueryVisitasIngreso.Close;
                UniQueryVisitasIngreso.SQL.Clear;
                UniQueryVisitasIngreso.SQL.Add('INSERT INTO visitas (Nom_Vis,Apell_Vis,Rut__Vis,Foto,Num_dep_Vis,Piso__Vis,Edif_Vis,Hora_In_Vis, Num_Vis,Usuario_mod,otro)');           //
                UniQueryVisitasIngreso.SQL.Add('VALUES (:Nom_Vis, :Apell_Vis, :Rut__Vis, :Foto, :Num_dep_Vis, :Piso__Vis, :Edif_Vis, :Hora_In_Vis, :Num_Vis, :Usuario_mod, tro)');                      //,
                UniQueryVisitasIngreso.ParamByName('Nom_vis').AsString := LabelNombreVis.text;
                UniQueryVisitasIngreso.ParamByName('Rut__Vis').AsString := LabelRutVis.Text;
                UniQueryVisitasIngreso.ParamByName('Num_dep_Vis').Asstring := LabelNumeroDpto.text;
                UniQueryVisitasIngreso.ParamByName('Piso__Vis').AsString := LabelPisoINF.text;
                UniQueryVisitasIngreso.ParamByName('Edif_Vis').AsString := LabelEdificio.text;
                UniQueryVisitasIngreso.ParamByName('Hora_In_Vis').AsDateTime := Now;
                UniQueryVisitasIngreso.ParamByName('Num_Vis').AsString := 'XXX';
                UniQueryVisitasIngreso.ParamByName('Usuario_mod').Asstring := 'TOTEM';
                UniQueryVisitasIngreso.ParamByName('otro').Asstring := 'E';
                UniQueryVisitasIngreso.ExecSQL;
                  begin
                  UniQueryIMG.Close;
                  UniQueryIMG.SQL.Clear;
                  UniQueryIMG.SQL.Add('UPDATE IMG SET FOTO = :FOTO, OTRO1 = :OTRO1 where OTRO1  = ''I'' and MODULO = ''VISITAS''');
                  UniQueryIMG.ParamByName('OTRO1').AsString := '';
                  uniQueryIMGFOTO.LoadFromStream(MS1) ;
                  UniQueryIMG.ExecSQL;
                  end;
                end;
              TabControl1.ActiveTab := TblEspera;
              LayoutEspera.Visible := true;
              FloatAnimation7.Enabled := true;
              Timer1.Enabled := true;
              Timer_fin.Enabled := false;
              ColorAnimation1.Enabled := false;
             end;

       end;
    finally
    //NewBitmap.Free;  //Los estoy comentando ya que uno de los dos me esta dando problema cerrandome la aplicacion
    MS1.Free;
    //Surf.Free;       //Los estoy comentando ya que uno de los dos me esta dando problema cerrandome la aplicacion


   end;

  end;
end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Reducir tamaño de imagen en TImage capo979 Gráficos 1 12-01-2009 17:29:59
Reducir el tamaño de una imagen pablopessoa Varios 6 11-10-2008 13:18:40
Resolución de una imagen icsoft Gráficos 4 23-07-2008 11:08:17
Resolucion de una imagen en reportBuilder trashky Impresión 2 08-05-2006 10:00:03
Reducir tamaño de imagen de un dbimage Walterdf Gráficos 4 11-11-2004 14:20:33


La franja horaria es GMT +2. Ahora son las 02:02:23.


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