AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verlustfrei Bitmap verkleinern

Ein Thema von Metal_Snake2 · begonnen am 7. Okt 2008 · letzter Beitrag vom 7. Okt 2008
Antwort Antwort
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#1

Verlustfrei Bitmap verkleinern

  Alt 7. Okt 2008, 18:06
Hallo,

ich wollte fragen ob es eine möglichkeit gibt ein Bitmap ohne Verluste zu verkleinern.

Momentan resample(verkleinere) ich meine Bitmap mit den "Graphics32" Komponenten. Ich kann
nur mit dem "TNerestResampler" verfahren wirklich verlustfrei verkleinern, jedoch
sieht das resultat viel zu grobpixelig aus.

Mein ziel ist es ein Bitmap verlustfrei zu verkleinern und dan aus dem Bitmap heraus eine Region zu erstellen.
Hierzu erstelle ich die Region so das ich einen Farbwert übergebe welcher als Transparents dienen soll.

Mein Problem ist nun das wenn ich das Bitmap mit z.B. "TLanzosKernel" resample das dan die Farbverluste dazu
führen das die Region nicht ganz richtig ist da sich beim verkleinern die Transparents farbe welche der Hintergrund
ist verändert hat.

Ich habe von der möglichkeit des "Seam carving" oder "liquid resizing" gehört welche ein Bild verlustfrei verkleinern/vergößern
kann, jedoch habe ich nirgends eine Delphi implementierung gefunden?

Ich hoffe mir kann jemand weiterhelfen den ich finde keinen akzeptabelen ausweg.

mit freundlichen Grüßen,

Metal_Snake
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Verlustfrei Bitmap verkleinern

  Alt 7. Okt 2008, 19:48
Durch Verkleinerung hast du immer Verluste, egal mit welchem Verfahren. Der einzige Weg den ich sähe, wäre es wenn du dir die originale Version in ursprünglicher Größe im Speicher behälst, und darüber die Maske erzeugst, die du dann verkleinern kannst.
Ein Problem kann dabei jedoch werden, dass Regions nur 1-bittig sind, d.h. wenn du diese dann auf Bilder anwendest die du mit was besserem als Nearest-Neighbour verkleinert hast, kannst du eben wieder Ränder erhalten.

Wenn du aber ohne hin schon mit der GR32 arbeitest, könntest du es evtl. so lösen, dass du im Original bei Pixeln mit deiner Transparenzfarbe den Alphakanal auf 0 setzt, und anschließend mit beliebigem Kernel verkleinerst. Dann sollte nämlich der Alphakanal gleich passend mit skaliert werden, und du kannst diesen dann zum Zeichnen auswerten. Regions fallen hierbei dann aber komplett raus.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

Re: Verlustfrei Bitmap verkleinern

  Alt 7. Okt 2008, 20:49
Zitat von Medium:
Durch Verkleinerung hast du immer Verluste...
nein! schon mal an png gedacht!? ist nur ein beispiel, wobei ich zugeben muss, dass ich kein weiteres kenne
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Verlustfrei Bitmap verkleinern

  Alt 7. Okt 2008, 21:03
Zitat von s.h.a.r.k:
Zitat von Medium:
Durch Verkleinerung hast du immer Verluste...
nein! schon mal an png gedacht!? ist nur ein beispiel, wobei ich zugeben muss, dass ich kein weiteres kenne
Verkleinern (Dateigröße) != Verkleinern (Auflösung)!
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

Re: Verlustfrei Bitmap verkleinern

  Alt 7. Okt 2008, 21:18
oha sorry, mein fehler. hab etwas anders gedacht, als da steht
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:02 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