Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi GR32 kontrast erhöhen? (https://www.delphipraxis.net/75959-gr32-kontrast-erhoehen.html)

alienous 27. Aug 2006 22:39


GR32 kontrast erhöhen?
 
hi ich nochmal! ich weiss, langsam könnte man für meine fragen ne eigene kategorie erstellen :D aber ich binn noch nich ganz vertraut mit der bilderbearbeitung. habe nach wie vor das problem, das die gedruckten bilder meines programms, das auf GR32 basiert, einen anderen farbton haben wie die bilder, die ich mit dem programm gedruckt habe, das beim drucker dabei war (easy-photoprint)

das programm soll fotos drucken, 4stk auf ein dina4, problem ist, das die hautfarbe von personen rötlicher gedruckt wird, als sie es ist, skylines sind blauer als sie es sind usw, ich weiss langsam echt nicht mehr woran das liegen kann!

hat da jemand ne idee? ich wills nun mit dem kontrast spielen, aber ne suche nach kontrast in der hilfe der komponenten hat nichts gebracht. wie geht man da vor?

oder emfiehlt ihr vielleicht printsuiten wie GMPrintSuite? übernehmen die das dann?


danke

DGL-luke 27. Aug 2006 22:43

Re: GR32 kontrast erhöhen?
 
ganz ehrlich: ich habe keine ahnung, warum die ausdrucke mit anderen tools anders sind als die mit deinen. einzige möglichkeit, die optimieren die daten selber noch, da sie ja wissen, dass es fotos sind.

also musst du, wenn du da rankommen willst, selber solche bildverbesserungsmethoden erstellen. Wie, das kann ich dir leider nicht sagen.

alienous 28. Aug 2006 15:09

Re: GR32 kontrast erhöhen?
 
schade :( also gibts solche printsuiten nicht, ok.

nunja, wenns jetz mit dem kontrast nicht klappt, dann gebe ich auch auf, aber hier mal eine von mir angepasste procedur, die ich hier gefunden habe:

Delphi-Quellcode:
function IntToByte(i:Integer):Byte;
asm
  MOV EAX,i
  CMP EAX,254
  JG  @SETHI
  CMP EAX,1
  JL  @SETLO
  RET
@SETHI:
  MOV EAX,255
  RET
@SETLO:
  MOV EAX,0
end;
Delphi-Quellcode:
procedure Contrast(var Bitmap: tbitmap32; Amount: Integer);
var
p0:PColor32EntryArray;
rg,gg,bg,r,g,b,x,y: Integer;
 begin
  for y:=0 to Bitmap.Height-1 do
  begin
    PColor32Array(p0):=Bitmap.scanline[y];
    for x:=0 to Bitmap.Width-1 do
    begin
      r:=p0[x].R;
      g:=p0[x].G;
      b:=p0[x].B;
      rg:=(Abs(127-r)*Amount)div 255;
      gg:=(Abs(127-g)*Amount)div 255;
      bg:=(Abs(127-b)*Amount)div 255;
      if r>127 then r:=r+rg else r:=r-rg;
      if g>127 then g:=g+gg else g:=g-gg;
      if b>127 then b:=b+bg else b:=b-bg;
      p0[x].R :=IntToByte(r);
      p0[x].G :=IntToByte(g);
      p0[x].B :=IntToByte(b);
    end;
  end;
end;
im einzelschritt-verfahren werden die werte bei amount = 10 ja nur ganz leicht verändert, und die werden auch zum schluss korrekt übergeben, aber ich erhalte ein schwarzes bild, woran liegt das? eine contrast-procedure habich in der gr32lib nicht gefunden. :gruebel:

DGL-luke 28. Aug 2006 15:22

Re: GR32 kontrast erhöhen?
 
Ich bin mir nicht sicher, ob das mit den Integern richtig ist... du solltest das alles lieber auf P/TColor32Entry casten... außerdem musst du hier nicht scanline verwenden, du kannst auf direkt auf TBitmap.Pixel zugreifen, das ist nicht viel langsamer.

Klaus01 28. Aug 2006 15:38

Re: GR32 kontrast erhöhen?
 
Geht das nicht mit einem zweiten Layer (GR32 unterstützt 2 Layer)
und mit der Methode Merge (beide Layer werden zu einem Zusammengefaßt)

Wenn die Farben zu intensiv sind, würde ich es versuchen sie mit einem
Grauton/Weiß zu "mischen".
http://graphics32.org/documentation/Docs/_Body.htm

Ob das so finktioniert kann ich dir aber nicht versprechen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz