Einzelnen Beitrag anzeigen

zeina

Registriert seit: 8. Jun 2018
56 Beiträge
 
#11

AW: jpeg- fehler #53

  Alt 15. Mai 2019, 09:46
.. du könntest bei TMemoryStream bleiben.

Delphi-Quellcode:
type
  TPictureTyp = (pw_None, pw_BMP, pw_JPG, pw_PNG);

function PictureTyp_pruefen(const imageStream: TMemoryStream): TPictureTyp;
var
  Buffer : Word;

begin
  imageStream.Read(Buffer,4);
 //High-Byte und Low-Byte im Buffer tauschen
  //(dadurch stimmt die Byte-Anordnung wieder mit der in der Bild-Datei überein)
  Buffer := Swap(Buffer);

  //Prüfung ob BMP, JPG oder PNG
  case Buffer of
    $424D: Result := pw_BMP;
    $FFD8: Result := pw_JPG;
    $8950: Result := pw_PNG;
  else
    Result := pw_None;
  end;
end;
Nur sehe ich in Deinem Code nicht, wie der MemoryStream "lmstImage" gefüllt wird.

Grüße
Klaus
der MemoryStream wird in dieser Zeile gefüllt

Delphi-Quellcode:
 if lGetRecord(lpTblGraph, 1) then
    begin
{$IFDEF TITAN}
      laImage := GetBlob(lpTblGraph);
{$ENDIF} // DEF TITAN
      lmstImage.Clear;
      lmstImage.Write(laImage[0], Length(laImage));
      lmstImage.Position := 0;
es tritt mir eine Fehler auf:
wenn ich (__).loadFromStream ????

Delphi-Quellcode:
procedure TFormFoto.ZeigeFoto(DB: String; ID: TiBtrvID);
var
  lpTblGraph: TpBtrvDBTableData;
  lbmpImage: TBitmap;
  lmstImage: Tmemorystream;
  laImage : TaByte;
  lgrpImage: TGraphic;
  ljpgImage: TJPEGImage ;
  lpicImage:TPictureTyp ;
    Buffer : Word;

begin
  lbmpImage := nil;
  lmstImage := nil;
  ljpgImage := nil;
  try
    //lbmpImage := TBitmap.Create;
    lmstImage := Tmemorystream.Create;
    ljpgImage := TJPEGImage.Create;

    lpTblGraph := RelData('GR');
    PutSField('GR', 1, DB);
    PutIdField('GR', 2, ID);
    if lGetRecord(lpTblGraph, 1) then
    begin
{$IFDEF TITAN}
      laImage := GetBlob(lpTblGraph);
{$ENDIF} // DEF TITAN
      lmstImage.Clear;
      lmstImage.Write(laImage[0], Length(laImage));
      lmstImage.Position := 0;
      lmstImage.Read(Buffer,4);
      Buffer := Swap(Buffer);
      //lpicImage:= PictureTyp_pruefen(lmstImage);
      case Buffer of
        $FFD8:
          begin
            ljpgImage.LoadFromStream(lmstImage);
            lbmpImage := TBitmap.Create;
            try
              lbmpImage.Assign(ljpgImage);
              lgrpImage.Free;
              lgrpImage := lbmpImage;
              Image1.picture.Graphic := (lgrpImage);
            finally
              lbmpImage.Free;
             end;
           end;
        $424D:
          begin
           lbmpImage.Transparent := True;
            lbmpImage.LoadFromStream(lmstImage);
            lbmpImage.TransparentColor := lbmpImage.Canvas.Pixels[0,lbmpImage.Height - 1];
            lbmpImage.ReleaseMaskHandle;
            lgrpImage.Free;
            lgrpImage := lbmpImage;
            Image1.picture.Graphic := (lgrpImage);
          end;
          $8950:
          begin
          Showmessage('ÄÄ');
          end;
      end;

      FormFoto.Caption := DB + '-' + IntToStr(ID);
      FotoResize;
    end
    else
    begin
      lgrpImage := nil;
    end;
  finally
   // lbmpImage.Free;
    lmstImage.Free;
    ljpgImage.Free;
  end;

end;
  Mit Zitat antworten Zitat