AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Gescanntes Bild transparent machen – Grafikprogramm gesucht

Gescanntes Bild transparent machen – Grafikprogramm gesucht

Ein Thema von Andreas13 · begonnen am 27. Sep 2022 · letzter Beitrag vom 29. Sep 2022
Antwort Antwort
Seite 2 von 3     12 3   
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
569 Beiträge
 
Delphi XE5 Professional
 
#11

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 10:53
Hallo KodeZwerg,
ab sofort bist Du für mich der KodeRIESE! Dein Programm funktioniert exzellent!

Vielen-vielen Dank für Deine & und Eure Hilfe und für alle Tipps!

Ihr habt mir sehr geholfen!

Danke & viele Grüße

Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.520 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 11:19
Hallo Andreas, das freut mich wenn ich Dir damit eine Freude bereiten konnte.
Ich glaube in dem TurboDelphi müsste man manuell "JPEG" "PNG" usw units einbinden für mehr Dateiformate... aber ist zu lange her
Ist halt nur auf die schnelle runtergetippst, kann man bestimmt noch eleganter machen aber es erspart einem eine Graphic-Anwendung zu installieren die das selbe macht
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
569 Beiträge
 
Delphi XE5 Professional
 
#13

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 11:38
Hallo "KodeRIESE",
BMP’S sind OK für meine Zwecke. Nach einer winzigen Anpassung - weil die Größe der gescannten Bilder je nach Literaturquelle manchmal doch unterschiedlich ist -
BorderStyle := bsSizeable; ist Dein Programm perfekt für meine Zwecke.

Auch habe ich paint.net und Gimp runtergeladen und werde sie demnächst ausprobieren.

Noch einmal herzlichen Dank & viele Grüße an Euch

Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.520 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 13:13
Ich verstehe, man kann dafür auch das Resize Event nutzen um beide Forms synchron zu halten mit der Größe (aus Faulheit hatte ich es bewusst als non-sizeable gemacht )

Ahh, ich vermute Du meinst BildA ist so und so skaliert und BildB eben etwas anders... dann natürlich nicht synchron
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
569 Beiträge
 
Delphi XE5 Professional
 
#15

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 13:46
Ja, exakt! Hier ist mal ein bebildertes Beispiel (s. Anhang) zum konkreten Nachvollziehen meiner Problematik.

Die beiden Kurven (= Fraktionsabscheidegrade zweier spezieller Gaszyklone) aus einer neueren Quelle (Fachbuch aus dem Jahr 1999 = Sekundärliteratur) habe ich schon lange gehabt. Aufgrund dieser Darstellungen hatte ich die Kurven digitalisiert und sie – mit viel Mühe und Zeitaufwand – durch eine physikalisch begründete Gleichung beschrieben.

Nach langen Bemühungen konnte ich endlich vorgestern die Originalquelle (Fachzeitschrift aus dem Jahre 1951 = Primärliteratur) erwerben. Es stellte sich die Frage, wie gut wohl die "Reproduktion" der Originalkurven in der Sekundärliteratur war, auf der meine ganze Rechenarbeit basierte.
Kurz und gut: Muß ich alles noch einmal machen, weil jemand (der Verfasser, der Zeichner oder die Druckerei der Sekundärliteratur) evtl. geschlampert hat?

Und diese Frage kann ich durch Skalieren beider Koordinatensysteme und Übereinanderlegen der Diagramme mit Hilfe Deines tollen Programms recht sicher beantworten.

Danke & Grüße, Andreas
Angehängte Dateien
Dateityp: zip Diagramme.zip (60,3 KB, 11x aufgerufen)
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.298 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 14:08
Hallo Andreas, das freut mich wenn ich Dir damit eine Freude bereiten konnte.
Ich glaube in dem TurboDelphi müsste man manuell "JPEG" "PNG" usw units einbinden für mehr Dateiformate... aber ist zu lange her
Ist halt nur auf die schnelle runtergetippst, kann man bestimmt noch eleganter machen aber es erspart einem eine Graphic-Anwendung zu installieren die das selbe macht
Keine Ahnung warum du immer von Turbo Delphi redest wo doch der OP XE5 im Profil angibt und du 11 Alexandria...
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.520 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 14:23
Hallo Andreas, das freut mich wenn ich Dir damit eine Freude bereiten konnte.
Ich glaube in dem TurboDelphi müsste man manuell "JPEG" "PNG" usw units einbinden für mehr Dateiformate... aber ist zu lange her
Ist halt nur auf die schnelle runtergetippst, kann man bestimmt noch eleganter machen aber es erspart einem eine Graphic-Anwendung zu installieren die das selbe macht
Keine Ahnung warum du immer von Turbo Delphi redest wo doch der OP XE5 im Profil angibt und du 11 Alexandria...
Tjo, das Profil hat halt nur Platz für eine Auswahl, ich habe aber zum erstellen mehr als diese eine Auswahl, also gebe ich an womit ich es erstellt und getestet habe falls es inkompatibel sein sollte.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
108 Beiträge
 
#18

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 16:11
@Andreas

Ich verstehe nicht 100% was du machen willst, aber wenn es drum geht deine Bilder durchsichtig zu machen, dh die weiße Farbe zu entfernen, so dass nur die Linien bleiben, dann ist das relativ einfach. Dazu kannst du das kostenlose Programm IrfanViewer nutzen:
  1. BMP Bild Monochrom speichern, also nur mit zwei Farben (hast du). Das kann man mit Paint machen.
  2. IrfanView einmal für Einstellungen öffnen. In Optionen/Einstellungen/Anzeige die Hintergrundfarbe auf weiß stellen.
  3. Monochromes BMP Bild mit IrfanViewer öffnen.
  4. Evtl. Bild begradigen. Dazu mit F12 ein Bearbeitungs-Fenster öffnen und mit dem Begradigungs-Tool das Bild begradigen.
  5. Bild als PNG Bild speichern. Im Optionsfenster Transparenz-Felder aktivieren.
  6. Speichern. Das Bild ist nun transparent, bzw. der weiße Hintergrund ist transparent.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
569 Beiträge
 
Delphi XE5 Professional
 
#19

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 28. Sep 2022, 17:50
Hallo Alallart,
danke für Deinen Lösungsvorschlag!

Seit ca. 2 Jahren habe auch ich IrfanView auf meinem PC installiert. Bin sehr enttäuscht davon. Es hat zwar einige gute und zeitgemäße Funktionen ("features"), aber es ist extrem umständlich in der Handhabung.

Rund 20 Jahre lang hatte ich davor ACDSee310 aus dem Jahre 2000 (!) benutzt : Irfan könnte sich vieles in puncto Bedienerfreundlichkeit von ACDSee310 abgucken und nachprogrammieren.

Was mich zur Installation von IrfanView bewegt hat, war primär Windows 10:
ACDSee310 will unter Windows10 ständig ins Internet, bevor es auf den User reagiert. Ich arbeite meistens offline und mußte oft nach jedem Programmstart 1..2 Minuten warten und einige blöde Fragen zum Verzicht der "Online-Vorteile" bestätigen, bevor ACDSee310 bereit war, sich mit mir abzugeben. Leider wurde die etwas neuere Version ACDSee 5.0 "zu Tode programmiert" und vollkommen unbrauchbar gemacht.

Verstehe nicht (und das gilt für vieeeeeeele kommerzielle Programme), warum ständig nur an der Optik herumgebastelt wird, anstelle die Funktionalität zu verbessern und bekannte Fehler auszumerzen. Aber ich muß ja nicht alles verstehen ...

Ich verstehe nicht 100% was du machen willst, aber ...
Probier' mal das KodeZwerg’s Programm mit meinen zwei Diagrammen aus, und siehst sofort, daß es extrem einfach zu handhaben ist. Man sollte es allerdings mit den Properties
Delphi-Quellcode:
FFormA.BorderStyle := bsSizeable;
...
FFormB.BorderStyle := bsSizeable;
neu kompilieren.

Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher.
John C. Cornelius
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.520 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Gescanntes Bild transparent machen – Grafikprogramm gesucht

  Alt 29. Sep 2022, 00:36
Ich habe noch etwas rumgefrickelt und das ist dabei rausgekommen

Dieses mal mit Alexandria und inklusive jpeg/gif/png.
Wenn nun eine der beiden Forms beendet wird, schließt sich das andere automatisch.
Ein druck auf die Leertaste lässt dich zwischen den Forms hin und her springen.
Ein druck auf die Abbrechen (Escape) taste, beendet rasch beide Forms.
Minimum AlphaBlend auf Wert 15 gesetzt damit man kein absolut durchsichtiges Fenster erhalten kann.
Per CheckBox ist nun eine Möglichkeit gegeben das bei einem erneuten laden die Forms zurückgesetzt werden können.

Hier ist der Quelltext und im Anhang ein fertiges 64bit Kompilat.
Delphi-Quellcode:
unit uMain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.ComCtrls,
  Vcl.ExtDlgs, Vcl.Imaging.jpeg, Vcl.Imaging.pngimage, Vcl.Imaging.GIFImg;

type
  TfrmMain = class(TForm)
    pnlOptions: TPanel;
    btnGo: TButton;
    cbReset: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnGoClick(Sender: TObject);
  private
    { Private declarations }
    FFileA, FFileB: string;
    FFormA, FFormB: TForm;
    FImageA, FImageB: TImage;
    FTrackBarA, FTrackBarB: TTrackBar;
    function GetImageFilename: string;
    procedure TrackBarAChange(Sender: TObject);
    procedure TrackBarBChange(Sender: TObject);
    procedure FormAClose(Sender: TObject; var Action: TCloseAction);
    procedure FormBClose(Sender: TObject; var Action: TCloseAction);
    procedure FormAKeyPress(Sender: TObject; var Key: Char);
    procedure FormBKeyPress(Sender: TObject; var Key: Char);
    procedure ResetForms;
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  FFormA := TForm.Create(Self);
  try
    FFormA.Parent := Self.Parent;
    FFormA.Height := 800;
    FFormA.Width := 800;
    FFormA.Position := poScreenCenter;
    FFormA.BorderStyle := bsSizeToolWin;
    FFormA.AlphaBlend := True;
    FFormA.Visible := False;
    FFormA.KeyPreview := True;
    FFormA.OnClose := FormAClose;
    FFormA.OnKeyPress := FormAKeypress;
    FImageA := TImage.Create(FFormA);
    try
      FImageA.Parent := FFormA;
      FImageA.Align := alClient;
      FImageA.Stretch := True;
      FTrackBarA := TTrackBar.Create(FFormA);
      try
        FTrackBarA.Parent := FFormA;
        FTrackBarA.Align := alBottom;
        FTrackBarA.Max := 255;
        FTrackBarA.Min := 15;
        FTrackBarA.Position := 255;
        FTrackBarA.Frequency := 25;
        FTrackBarA.OnChange := TrackBarAChange;
      finally
      end;
    finally
    end;
  finally
  end;
  FFormB := TForm.Create(Self);
  try
    FFormB.Parent := Self.Parent;
    FFormB.Height := 800;
    FFormB.Width := 800;
    FFormB.Position := poScreenCenter;
    FFormB.BorderStyle := bsSizeToolWin;
    FFormB.AlphaBlend := True;
    FFormB.Visible := False;
    FFormB.KeyPreview := True;
    FFormB.OnClose := FormBClose;
    FFormB.OnKeyPress := FormBKeypress;
    FImageB := TImage.Create(FFormB);
    try
      FImageB.Parent := FFormB;
      FImageB.Align := alClient;
      FImageB.Stretch := True;
      FTrackBarB := TTrackBar.Create(FFormB);
      try
        FTrackBarB.Parent := FFormB;
        FTrackBarB.Align := alBottom;
        FTrackBarB.Max := 255;
        FTrackBarB.Min := 15;
        FTrackBarB.Position := 255;
        FTrackBarB.Frequency := 25;
        FTrackBarB.OnChange := TrackBarBChange;
      finally
      end;
    finally
    end;
  finally
  end;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FTrackBarB.Free;
  FImageB.Free;
  FFormB.Free;
  FTrackBarA.Free;
  FImageA.Free;
  FFormA.Free;
  Action := caFree;
end;

procedure TfrmMain.FormAClose(Sender: TObject; var Action: TCloseAction);
begin
  if FFormB.Visible then
    FFormB.Visible := False;
  FFormA.Visible := False;
  Action := caNone;
end;

procedure TfrmMain.FormBClose(Sender: TObject; var Action: TCloseAction);
begin
  if FFormA.Visible then
    FFormA.Visible := False;
  FFormB.Visible := False;
  Action := caNone;
end;

procedure TfrmMain.FormAKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    Char(VK_ESCAPE): FFormA.Close;
    Char(VK_SPACE): begin
                      FFormB.BringToFront;
                      FFormB.SetFocus;
                    end;
  end;
end;

procedure TfrmMain.FormBKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    Char(VK_ESCAPE): FFormB.Close;
    Char(VK_SPACE): begin
                      FFormA.BringToFront;
                      FFormA.SetFocus;
                    end;
  end;
end;

procedure TfrmMain.TrackBarAChange(Sender: TObject);
begin
  FFormA.AlphaBlendValue := (Sender As TTrackBar).Position
end;

procedure TfrmMain.TrackBarBChange(Sender: TObject);
begin
  FFormB.AlphaBlendValue := (Sender As TTrackBar).Position
end;

function TfrmMain.GetImageFilename: string;
const CFilter = string(
  'Alle Dateien (*.*)|*.*|'+
  'Alle Bilder|*.gif;*.jpg;*.jpeg;*.png;*.bmp;*.ico;*.emf;*.wmf;*.tif;*.tiff|'+
  'GIF Images|*.gif|'+
  'JPEG Images|*.jpg;*.jpeg|'+
  'Portable Network Graphics|*.png|'+
  'Bitmaps|*.bmp|'+
  'Icons|*.ico|'+
  'Enhanced Metafiles|*.emf|'+
  'Metafiles|*.wmf|'+
  'TIFF Images|*.tif;*.tiff'
  );
var
  dlg: TOpenDialog;
begin
  Result := '';
  dlg := TOpenDialog.Create(Self);
  try
    dlg.Options := [ofPathMustExist, ofFileMustExist, ofDontAddToRecent, ofForceShowHidden];
    dlg.Filter := CFilter;
    dlg.FilterIndex := 2;
    dlg.Title := 'Bitte wählen Sie eine gültige Bild-Datei aus.';
    if dlg.Execute(Self.Handle) then
      Result := dlg.FileName;
  finally
    dlg.Free;
  end;
end;

procedure TfrmMain.ResetForms;
begin
  FFormA.Position := poDesigned;
  FFormB.Position := poDesigned;
  FFormA.Top := 0;
  FFormB.Top := 0;
  FFormA.Width := 800;
  FFormA.Height := 800;
  FFormB.Width := 800;
  FFormB.Height := 800;
  FTrackBarA.Position := 255;
  FTrackBarB.Position := 255;
  FFormA.Position := poScreenCenter;
  FFormB.Position := poScreenCenter;
end;

procedure TfrmMain.btnGoClick(Sender: TObject);
begin
  if FFormA.Visible then
    FFormA.Visible := False;
  if FFormB.Visible then
    FFormB.Visible := False;
  FFileA := GetImageFilename;
  if FFileA = 'then
    Exit;
  FFileB := GetImageFilename;
  if FFileB = 'then
    Exit;
  try
    FImageA.Picture.LoadFromFile(FFileA);
  except
    Exit;
  end;
  try
    FImageB.Picture.LoadFromFile(FFileB);
  except
    Exit;
  end;
  if (UpperCase(ExtractFilePath(FFileA)) = UpperCase(ExtractFilePath(FFileB))) then
    begin
      FFormA.Caption := ExtractFileName(FFileA);
      FFormB.Caption := ExtractFileName(FFileB);
    end
    else
    begin
      FFormA.Caption := FFileA;
      FFormB.Caption := FFileB;
    end;
  if cbReset.Checked then
    ResetForms;
  FFormA.Visible := True;
  FFormB.Visible := True;
end;

end.
Viel Spass damit!

//edit
Kompilat entfernt um platz zu sparen, neues ist in letzter post von mir.
Gruß vom KodeZwerg

Geändert von KodeZwerg (29. Sep 2022 um 18:11 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf