![]() |
Bild halbieren mit Cmyk-farbe
Hi,
ich habe neulich ne Dll programmiert, jedoch funtioniert sie komischerweise nicht richtig. sie soll ein vorhandenes Bild immer um die hälfte kleiner machen, da das bild in raw vorliegt und meistens cmyk ist wollte ich jedes vierte byte weglassen, jedoch wird das bild nur abgeschnitten und nicht um die hälfte reduziert hier mal den code:
Delphi-Quellcode:
function ReduceResolutionProportional(Stream: TMemoryStream; Width,
Height: Word; ColorDepth: Byte; HeadSize: Int64 = 0): TMemoryStream; stdcall; resourcestring OnEWrongStreamSize = 'Wrong Stream Size (%d, %d)'; OnEWrongPictureFormat = 'Wrong Picture Format (%d, %d)'; var Bytes: Int64; i, k: Integer; HalfWidth: Word; begin if (Width mod 2 = 1) or (Height mod 2 = 1) then begin raise EWrongPictureFormat.Create(Format(OnEWrongPictureFormat, [Width, Height])); Exit; end; Bytes:= Width * Height * ColorDepth + HeadSize; if Stream.Size <> Bytes then begin raise EWrongStreamSize.Create(Format(OnEWrongStreamSize, [Stream.Size, Bytes])); Exit; end; Stream.Position:= 0; Result:= TMemoryStream.Create; Result.Position:= 0; HalfWidth:= Width div 2; for i:= 1 to Height do begin if i mod 2 = 0 then Stream.Seek(soFromCurrent, ColorDepth * Width); for k:= 1 to HalfWidth do begin Result.CopyFrom(Stream, ColorDepth); Stream.Seek(soFromCurrent, ColorDepth * 2); end; end; Stream.Free; end; Wiso geht das nicht? Ich hoffe Ihr könnt mir helfen Gruß Sebby :gruebel: |
Re: Komischer Fehler
Hallo Sebastian,
bitte gebe Deinem Beitrag einen aussagekräftien Titel. |
Re: Problem beim runterrechen von raw-Dateien
Und bitte bitte noch Delphi-Tags... :)
MFG Florian :hi: |
Re: Problem beim runterrechen von raw-Dateien
So, könnten wir nun zu meinen Problem kommen und das aussehen im hintergrund stellen?
Gruß Sebby :P :wink: |
Re: runterrechen von raw-Dateien (dringend)
Soweit ich das sehen kann, soll die Funktion alle x Bytes x Bytes auslassen und jede 2. Zeile des Bildes. Das dürfte die Funktionsweise erklären, aber ich kann dir auch nicht sagen wo der Fehler liegt.
|
Re: runterrechen von raw-Dateien (dringend)
das ist echt wahnsennig toll, wie ihr alle an diesen thema interesse zeigt
sebby |
Re: Bild halbieren mit Cmyk-farbe
hi,
wenn du bytes wegschneidest, ist es doch logisch, dass dieser teil des bildes dann auch weg ist. ich verstehe dich so, dass du das bild "stretchen" wilst. aber wie du das amchst, kann ich dir leider auch nicht sagen, da ich das RAW-format nicht kenne. Zitat:
Aenogym |
Re: Bild halbieren mit Cmyk-farbe
Hi Aenogym,
ich schneide das Bild nicht ab, es sollen nur alle 4Bytes 4Bytes ausgelassen werden und jede 2. Zeile 1.Zeile. Gruß Sebby |
Re: Bild halbieren mit Cmyk-farbe
Mal so 'ne dumme Frage:
Was genau soll dir die Funktion eigenltich brigen? Ich meine, alle 4Bytes 4Bytes und jede 2. Zeile eine Zeile entfernen verändert ja das Bild extrem. Vllt. kann man dir ja weiterhelfen, wenn man den Verwendungszweck kennt. |
Re: Bild halbieren mit Cmyk-farbe
Es soll die Auflösung reduzieren nehme ich an, indem es nach jedem Pixel einen Pixel auslässt und nach jeder Zeile wird eine Zeile ausgelassen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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-2025 by Thomas Breitkreuz