private async void TranscodeImage()
        {
            if (!_imgLoaded || pbSource.Image == null)
            {
                return;
            }

            ToggleProperties(false);
            ToggleForm(false);

            var sourceImage = (Bitmap)Image.FromStream(_imgStream);
            var progress    = new Progress <ProgressReport>();

            progress.ProgressChanged += Progress_ProgressChanged;

            try
            {
                var imgData = await SelectedColorEncodingAdapter.Encode(sourceImage, progress);

                pbTarget.Image = await SelectedColorEncodingAdapter.Decode(imgData, sourceImage.Width, sourceImage.Height, progress);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "Exception catched.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            tslPbHeightSource.Text = pbSource.Image.Height.ToString();
            tslPbWidthSource.Text  = pbSource.Image.Width.ToString();
            tslPbHeightTarget.Text = pbTarget.Image.Height.ToString();
            tslPbWidthTarget.Text  = pbTarget.Image.Width.ToString();

            ToggleProperties(true);
            ToggleForm(true);
        }
Beispiel #2
0
        private async void LoadImage()
        {
            if (!_fileLoaded || _openedFile == null)
            {
                return;
            }

            if (!int.TryParse(tbOffset.Text, out var offset) &&
                !int.TryParse(tbOffset.Text.Replace("0x", ""), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out offset) ||
                !int.TryParse(tbWidth.Text, out var width) ||
                !int.TryParse(tbHeight.Text, out var height))
            {
                return;
            }

            if (offset < 0 || offset >= _openedFile.Length || width <= 0 || height <= 0)
            {
                return;
            }

            ToggleProperties(false);
            ToggleForm(false);

            var neededData = SelectedColorEncodingAdapter.CalculateLength(width, height);

            _openedFile.Position = offset;
            var imgData = new byte[Math.Min(neededData, _openedFile.Length - offset)];

            _openedFile.Read(imgData, 0, imgData.Length);

            var progress = new Progress <ProgressReport>();

            try
            {
                pbMain.Image = await SelectedColorEncodingAdapter.Decode(imgData, width, height, progress);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString(), "Exception catched.", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            tslPbWidth.Text  = pbMain.Width.ToString();
            tslPbHeight.Text = pbMain.Height.ToString();

            ToggleProperties(true);
            ToggleForm(true);
        }