public static Bitmap EmbedImage(string visibleImageFilename, string hiddenImageFilename) { Bitmap visibleImage = new Bitmap(visibleImageFilename); Bitmap hiddenImage = new Bitmap(hiddenImageFilename); // TODO: don't need to resize to a half if hidden image is less than a half hiddenImage = ImageResizer.CropAndResizeBitmap(visibleImage.Size, hiddenImage, 0.5); Bitmap stegImage = new Bitmap(visibleImage.Width, visibleImage.Height); PixelMapper pixelMapper = new PixelMapper(visibleImage.Size, hiddenImage.Size); foreach (PixelMap pm in pixelMapper.GetHiddenToVisiblePixelMapEnumerator()) { foreach (PixelBitsMap pbm in pm.VisibleImagePoints) { BitArray r = copyChannel(visibleImage, hiddenImage, pm.HiddenImagePoint, pbm, Channel.R); BitArray g = copyChannel(visibleImage, hiddenImage, pm.HiddenImagePoint, pbm, Channel.G); BitArray b = copyChannel(visibleImage, hiddenImage, pm.HiddenImagePoint, pbm, Channel.B); Color pixelColor = Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt()); stegImage.SetPixel(pbm.Point.X, pbm.Point.Y, pixelColor); } } return(stegImage); }
public void Snapshot_PostSnapshot_SnapshotShoudntChange() { int width = 200; int height = 200; int viewportX = 30; int viewportY = 30; float gameScale = 2.0f; IPixelMapper pixelMapper = new PixelMapper(); pixelMapper.SetViewPortSize(width, height); pixelMapper.AdjustGameScale(gameScale); pixelMapper.SetViewPort(viewportX, viewportY); IPixelMapper actual = pixelMapper.Snapshot(); pixelMapper.AdjustGameScale(0.5f); pixelMapper.SetViewPort(0, 0); Assert.Equal(-viewportX, actual.ViewPortX); Assert.Equal(-viewportY, actual.ViewPortY); Assert.Equal(gameScale, actual.GameScale); Assert.Equal(width, actual.ViewPortWidth); Assert.Equal(height, actual.ViewPortHeight); }
public void AdjustGameScale_DoubleZoomIn_CorrectViewportWorldPosition() { const int ScreenSize = 200; IPixelMapper pixelMapper = new PixelMapper(); pixelMapper.SetViewPortSize(ScreenSize, ScreenSize); // Set the inital viewport to be at 100,100 pixelMapper.SetViewPort(100, 100); pixelMapper.LogData(_output); Assert.Equal(100, -pixelMapper.ViewPortX); Assert.Equal(100, -pixelMapper.ViewPortY); pixelMapper.AdjustGameScale(2f); pixelMapper.LogData(_output); Assert.Equal(300, -pixelMapper.ViewPortX); Assert.Equal(300, -pixelMapper.ViewPortY); pixelMapper.AdjustGameScale(2f); pixelMapper.LogData(_output); Assert.Equal(700, -pixelMapper.ViewPortX); Assert.Equal(700, -pixelMapper.ViewPortY); }
public void Snapshot_NoChanges() { IPixelMapper pixelMapper = new PixelMapper(); IPixelMapper actual = pixelMapper.Snapshot(); AssertSnapshotsSame(pixelMapper, actual); }
public void Snapshot_CompareTwoSnapshotsFromSameMapper() { IPixelMapper pixelMapper = new PixelMapper(); IPixelMapper expected = pixelMapper.Snapshot(); IPixelMapper actual = pixelMapper.Snapshot(); AssertSnapshotsSame(expected, actual); }
public void AdjustGameScale_CantZoomToZero() { const int ScreenSize = 200; IPixelMapper pixelMapper = new PixelMapper(); pixelMapper.SetViewPortSize(ScreenSize, ScreenSize); pixelMapper.AdjustGameScale(0.0f); pixelMapper.LogData(_output); Assert.Equal(1.0f, pixelMapper.GameScale); }
public void MapPixels_ExpectedMapping(int width, int height, Corner zeroPixelCorner, bool vertical, bool alternateStride, byte[] expectedOutput) { var input = ExtendArray(new byte[] { 0, 1, 2, 3, 4, 5 }); expectedOutput = ExtendArray(expectedOutput); var output = new byte[expectedOutput.Length]; PixelMapper.MapPixels(width, height, zeroPixelCorner, vertical, alternateStride, input, output); for (int i = 0; i < expectedOutput.Length; i++) { Assert.True(expectedOutput[i] == output[i], $"Expected: [{string.Join(", ", expectedOutput)}] Actual: [{string.Join(", ", output)}]"); } }
public void Snapshot_FullySetup() { int width = 200; int height = 200; int viewportX = 30; int viewportY = 30; IPixelMapper pixelMapper = new PixelMapper(); pixelMapper.SetViewPortSize(width, height); pixelMapper.SetViewPort(viewportX, viewportY); pixelMapper.AdjustGameScale(2f); IPixelMapper actual = pixelMapper.Snapshot(); AssertSnapshotsSame(pixelMapper, actual); }
public static Bitmap ExtractHiddenImage(string stegImageFilename) { Bitmap stegImage = new Bitmap(stegImageFilename); Bitmap hiddenImage = new Bitmap(stegImage.Size.Width / 2, stegImage.Size.Height / 2); PixelMapper pixelMapper = new PixelMapper(stegImage.Size, hiddenImage.Size); foreach (PixelMap pm in pixelMapper.GetHiddenToVisiblePixelMapEnumerator()) { BitArray r = extractChannel(stegImage, hiddenImage, pm, Channel.R); BitArray g = extractChannel(stegImage, hiddenImage, pm, Channel.G); BitArray b = extractChannel(stegImage, hiddenImage, pm, Channel.B); Color pixelColor = Color.FromArgb(r.ToInt(), g.ToInt(), b.ToInt()); hiddenImage.SetPixel(pm.HiddenImagePoint.X, pm.HiddenImagePoint.Y, pixelColor); } return(hiddenImage); }
public void AdjustGameScale_SingleZoomOut_CorrectViewportWorldPosition() { const int GameSize = 100; const int ScreenSize = 200; IPixelMapper pixelMapper = new PixelMapper(); pixelMapper.Initialize(GameSize, GameSize); pixelMapper.SetViewPortSize(ScreenSize, ScreenSize); // Set the inital viewport to be at 100,100 pixelMapper.SetViewPort(100, 100); pixelMapper.LogData(_output); Assert.Equal(100, -pixelMapper.ViewPortX); Assert.Equal(100, -pixelMapper.ViewPortY); pixelMapper.AdjustGameScale(0.5f); pixelMapper.LogData(_output); Assert.Equal(0, -pixelMapper.ViewPortX); Assert.Equal(0, -pixelMapper.ViewPortY); }