Ich erstelle Heatmap abhängig von den Blickflächen eines gegebenen Bildes. Ich kann die Heatmap erstellen und sie als neue Datei auf meinem Desktop speichern. Aber ich möchte ein anderes Bild erstellen, das aus der Heatmap und dem Bild besteht, auf dem die Eye-Tracking-Daten gesammelt wurden. Ich möchte, dass das Originalbild der durchgehende Hintergrund ist, und überlappe dann (oder Overlay, das ich nicht kenne) die Heatmap als transparent und füge sie in eine neue Datei zusammen. Gibt es eine Möglichkeit, es in C# zu tun? DankeÜberlappung eines Bildes als transparent auf einem anderen in C#
-2
A
Antwort
0
Ok ich eine Antwort gefunden,
erste ich mein Hintergrundbild skalieren
public static Bitmap ResizeImage(Bitmap image, int width, int height)
{
var destRect = new Rectangle(0, 0, width, height);
var destImage = new Bitmap(width, height);
destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destImage))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
}
}
return destImage;
}
nach, dass der Heatmap auf einem anderen Opazitätsniveau eingestellt werden muss, um Hintergrund sichtbar
zu machenpublic static Image SetImageOpacity(Image image, float opacity)
{
try
{
//create a Bitmap the size of the image provided
Bitmap bmp = new Bitmap(image.Width, image.Height);
//create a graphics object from the image
using (Graphics gfx = Graphics.FromImage(bmp))
{
//create a color matrix object
ColorMatrix matrix = new ColorMatrix();
//set the opacity
matrix.Matrix33 = opacity;
//create image attributes
ImageAttributes attributes = new ImageAttributes();
//set the color(opacity) of the image
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
//now draw the image
gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
}
return bmp;
}
catch (Exception ex)
{
//MessageBox.Show(ex.Message);
throw ex;
//return null;
}
}
schließlich müssen wir diese beiden
fusionieren 210 public static Image Overlap(Image source1, Image source2)
{
var target = new Bitmap(source1.Width, source1.Height, PixelFormat.Format32bppArgb);
var graphics = Graphics.FromImage(target);
graphics.CompositingMode = CompositingMode.SourceOver; // this is the default, but just to be clear
graphics.DrawImage(source1, 0, 0);
graphics.DrawImage(source2, 0, 0);
return target;
}
hier ist mein Hintergrund, der mächtige Erdogan (parallel Töter, coup Zerstörer, der König von çomars, und der Protektor des Kalifats) original RTE
und hier ist die fusionierte Version, mit der Heatmap von Die Eyetracking-Daten RTE + heatmap
Ja, es gibt einen Weg. Haben Sie versucht, es zu googeln? :) – Pikoh
Natürlich versuchte ich – Danabey
Versuchen Sie folgende Antwort http://StackOverflow.com/A/6842854/6170142 Dies wird verwendet, um zwei Bilder zu einem zusammenführen und die resultierende Datei speichern. –