public void VobSubWriteAndReadTwoBitmaps() { string fileName = Guid.NewGuid() + ".sub"; using (var writer = new VobSubWriter(fileName, 800, 600, 10, 10, 32, Color.White, Color.Black, true, DvdSubtitleLanguage.English)) { var p1 = new Paragraph("Line1", 0, 1000); var p2 = new Paragraph("Line2", 2000, 3000); writer.WriteParagraph(p1, new Bitmap(200, 20), ContentAlignment.BottomCenter); writer.WriteParagraph(p2, new Bitmap(200, 20), ContentAlignment.BottomCenter); } var reader = new VobSubParser(true); reader.Open(fileName); var list = reader.MergeVobSubPacks(); Assert.IsTrue(list.Count == 2); }
public static List <SubtitleEvent> ReadVobSub(string inputFile, string idxFile) { List <SubtitleEvent> events = new List <SubtitleEvent>(); StringBuilder logger = new StringBuilder(); var vobsubparser = new VobSubParser(false); vobsubparser.OpenSubIdx(inputFile, idxFile); var MergedVobSubPacks = vobsubparser.MergeVobSubPacks(); int i = 0; foreach (var line in MergedVobSubPacks) { var bitmap = line.SubPicture.GetBitmap(vobsubparser.IdxPalette, Color.Black, Color.White, Color.Gray, Color.White, false); var image_data = ImageUtil.ConvertToPngBytes(bitmap); events.Add(new SubtitleEvent() { StartTime = line.StartTime, EndTime = line.EndTime, MimeType = "image/png", Image = image_data, Origin = line.SubPicture.ImageDisplayArea.Location }); i++; } return(events); }
private void ButtonStartRippingClick(object sender, EventArgs e) { if (buttonStartRipping.Text == _language.Abort) { _abort = true; buttonStartRipping.Text = _language.StartRipping; return; } _abort = false; buttonStartRipping.Text = _language.Abort; _lastPresentationTimestamp = 0; _lastVobPresentationTimestamp = 0; _lastNavEndPts = 0; _accumulatedPresentationTimestamp = 0; progressBarRip.Visible = true; var ms = new MemoryStream(); int i = 0; foreach (string vobFileName in listBoxVobFiles.Items) { i++; labelStatus.Text = string.Format(_language.RippingVobFileXofYZ, Path.GetFileName(vobFileName), i, listBoxVobFiles.Items.Count); Refresh(); Application.DoEvents(); if (!_abort) { RipSubtitles(vobFileName, ms, i - 1); // Rip/demux subtitle vob packs } } progressBarRip.Visible = false; TaskbarList.SetProgressState(_taskbarFormHandle, TaskbarButtonProgressFlags.NoProgress); buttonStartRipping.Enabled = false; if (_abort) { labelStatus.Text = _language.AbortedByUser; buttonStartRipping.Text = _language.StartRipping; buttonStartRipping.Enabled = true; return; } labelStatus.Text = string.Format(_language.ReadingSubtitleData); Refresh(); Application.DoEvents(); var vobSub = new VobSubParser(radioButtonPal.Checked); vobSub.Open(ms); ms.Close(); labelStatus.Text = string.Empty; MergedVobSubPacks = vobSub.MergeVobSubPacks(); // Merge splitted-packs to whole-packs if (MergedVobSubPacks.Count == 0) { MessageBox.Show(Configuration.Settings.Language.Main.NoSubtitlesFound); buttonStartRipping.Text = _language.StartRipping; buttonStartRipping.Enabled = true; return; } Languages = new List <string>(); for (int k = 0; k < comboBoxLanguages.Items.Count; k++) { Languages.Add(comboBoxLanguages.Items[k].ToString()); } buttonStartRipping.Text = _language.StartRipping; buttonStartRipping.Enabled = true; DialogResult = DialogResult.OK; }