コード例 #1
0
        private void decodeLSB(FileType fileType)
        {
            byte[] currentFileBytesToDecode = this.fileBytes;

            if (fileType == FileType.BMP)
            {
                currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesBmp(ref currentFileBytesToDecode);
            }
            else
            {
                currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesJpg(ref currentFileBytesToDecode);
            }

            while (currentFileBytesToDecode != null)
            {
                FileType decodedFileBytesFileType = FileFormatHelpers.checkFileType(ref currentFileBytesToDecode);

                switch (decodedFileBytesFileType)
                {
                case (FileType.BMP): {
                    DecodedFileWindow decodedFileWindow = new DecodedFileWindow();
                    decodedFileWindow.setFile(ref currentFileBytesToDecode);
                    decodedFileWindow.Show();

                    currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesBmp(ref currentFileBytesToDecode);
                } break;

                case (FileType.JPEG): {
                    DecodedFileWindow decodedFileWindow = new DecodedFileWindow();
                    decodedFileWindow.setFile(ref currentFileBytesToDecode);
                    decodedFileWindow.Show();

                    currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesJpg(ref currentFileBytesToDecode);
                } break;

                case (FileType.NONE): {
                    StringBuilder message = new StringBuilder();

                    byte[] currentCharBytesUnicode = System.Text.Encoding.Convert(Encoding.ASCII, Encoding.Unicode, currentFileBytesToDecode);
                    char[] unicodeChars            = new char[Encoding.Unicode.GetCharCount(currentCharBytesUnicode, 0, currentCharBytesUnicode.Length)];
                    Encoding.Unicode.GetChars(currentCharBytesUnicode, 0, currentCharBytesUnicode.Length, unicodeChars, 0);
                    string unicodeString = new string(unicodeChars);
                    currentFileBytesToDecode = null;

                    DecodedMessageWindow decodedMessageWindow = new DecodedMessageWindow();
                    decodedMessageWindow.setMessage(unicodeString);
                    decodedMessageWindow.Show();
                } break;
                }
            }
        }
コード例 #2
0
        private bool encodeLSBBMP()
        {
            bool result = false;

            BmpFileHeaders bmpFileHeaders = FileFormatHelpers.readBmpFileHeaders(this.fileBytes);

            LSBEncodeDialog lSBEncodeDialog = new LSBEncodeDialog();

            if (lSBEncodeDialog.ShowDialog() == true)
            {
                EncodeQueryResult encodeQueryResult = lSBEncodeDialog.getResult();

                byte[] sourceByteArray = FileFormatHelpers.convertLayerToByteArray(encodeQueryResult.layers[encodeQueryResult.layers.Count - 1]);

                for (int index = (encodeQueryResult.layers.Count - 1); index >= 0; index--)
                {
                    if (index == 0)
                    {
                        FileFormatHelpers.encodeDataIntoFileBytesBmp(
                            ref bmpFileHeaders,
                            ref sourceByteArray,
                            ref this.fileBytes
                            );
                    }
                    else
                    {
                        LayerInformation layerTargetInformation = encodeQueryResult.layers[index - 1];
                        sourceByteArray = FileFormatHelpers.encodeDataIntoLayersFileBytes(
                            ref sourceByteArray,
                            layerTargetInformation
                            );
                    }

                    encodeQueryResult.layers.RemoveAt(index);
                }

                result = true;
            }

            return(result);
        }