Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bild halbieren mit Cmyk-farbe (https://www.delphipraxis.net/39225-bild-halbieren-mit-cmyk-farbe.html)

Newbie44 30. Jan 2005 16:30


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:

Daniel 30. Jan 2005 16:51

Re: Komischer Fehler
 
Hallo Sebastian,

bitte gebe Deinem Beitrag einen aussagekräftien Titel.

flomei 30. Jan 2005 16:57

Re: Problem beim runterrechen von raw-Dateien
 
Und bitte bitte noch Delphi-Tags... :)

MFG Florian :hi:

Newbie44 30. Jan 2005 17:08

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:

DelphiFreund 30. Jan 2005 17:36

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.

Newbie44 30. Jan 2005 18:01

Re: runterrechen von raw-Dateien (dringend)
 
das ist echt wahnsennig toll, wie ihr alle an diesen thema interesse zeigt

sebby

Aenogym 30. Jan 2005 18:10

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:

das ist echt wahnsennig toll, wie ihr alle an diesen thema interesse zeigt
ähm, ich denke, es interessiert schon einige. nur, wenn niemand eine ahnung hat, dann kann hier auch keine antwort geschrieben werden, die dein problem löst. sorry.

Aenogym

Newbie44 30. Jan 2005 18:19

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

Kernel32.DLL 30. Jan 2005 19:25

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.

DelphiFreund 30. Jan 2005 19:47

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 22:45 Uhr.
Seite 1 von 2  1 2      

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