![]() |
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 |
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. |
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:
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:
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; |
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.
|
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". ![]() Ob das so finktioniert kann ich dir aber nicht versprechen. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz