mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-28 15:02:35 +01:00
Add image resizing for bd sup
This commit is contained in:
parent
55251c9a0e
commit
c294574f38
27
src/Forms/ExportPngXml.Designer.cs
generated
27
src/Forms/ExportPngXml.Designer.cs
generated
@ -99,6 +99,8 @@
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader5 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.comboBoxResizePercentage = new System.Windows.Forms.ComboBox();
|
||||
this.labelResize = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.contextMenuStrip1.SuspendLayout();
|
||||
this.groupBoxImageSettings.SuspendLayout();
|
||||
@ -170,6 +172,8 @@
|
||||
//
|
||||
this.groupBoxImageSettings.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBoxImageSettings.Controls.Add(this.labelResize);
|
||||
this.groupBoxImageSettings.Controls.Add(this.comboBoxResizePercentage);
|
||||
this.groupBoxImageSettings.Controls.Add(this.comboBoxBottomMarginUnit);
|
||||
this.groupBoxImageSettings.Controls.Add(this.comboBoxLeftRightMarginUnit);
|
||||
this.groupBoxImageSettings.Controls.Add(this.labelLineHeightStyle);
|
||||
@ -988,6 +992,27 @@
|
||||
this.subtitleListView1.SelectedIndexChanged += new System.EventHandler(this.subtitleListView1_SelectedIndexChanged);
|
||||
this.subtitleListView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.subtitleListView1_KeyDown);
|
||||
//
|
||||
// comboBoxResizePercentage
|
||||
//
|
||||
this.comboBoxResizePercentage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxResizePercentage.FormattingEnabled = true;
|
||||
this.comboBoxResizePercentage.Location = new System.Drawing.Point(296, 5);
|
||||
this.comboBoxResizePercentage.Name = "comboBoxResizePercentage";
|
||||
this.comboBoxResizePercentage.Size = new System.Drawing.Size(77, 21);
|
||||
this.comboBoxResizePercentage.TabIndex = 18;
|
||||
this.comboBoxResizePercentage.Visible = false;
|
||||
this.comboBoxResizePercentage.SelectedIndexChanged += new System.EventHandler(this.comboBoxResizePercentage_SelectedIndexChanged);
|
||||
//
|
||||
// labelResize
|
||||
//
|
||||
this.labelResize.AutoSize = true;
|
||||
this.labelResize.Location = new System.Drawing.Point(251, 8);
|
||||
this.labelResize.Name = "labelResize";
|
||||
this.labelResize.Size = new System.Drawing.Size(39, 13);
|
||||
this.labelResize.TabIndex = 61;
|
||||
this.labelResize.Text = "Resize";
|
||||
this.labelResize.Visible = false;
|
||||
//
|
||||
// ExportPngXml
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -1098,5 +1123,7 @@
|
||||
private System.Windows.Forms.Label labelLineHeightStyle;
|
||||
private System.Windows.Forms.ComboBox comboBoxBottomMarginUnit;
|
||||
private System.Windows.Forms.ComboBox comboBoxLeftRightMarginUnit;
|
||||
private System.Windows.Forms.ComboBox comboBoxResizePercentage;
|
||||
private System.Windows.Forms.Label labelResize;
|
||||
}
|
||||
}
|
@ -557,6 +557,13 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
{
|
||||
var mp = MakeMakeBitmapParameter(i, width, height);
|
||||
mp.Bitmap = _vobSubOcr.GetSubtitleBitmap(i++);
|
||||
var exp = GetResizeScale();
|
||||
if (Math.Abs(exp - 1) > 0.01)
|
||||
{
|
||||
var resizedBitmap = ResizeBitmap(mp.Bitmap, (int)Math.Round(mp.Bitmap.Width * exp), (int)Math.Round(mp.Bitmap.Height * exp));
|
||||
mp.Bitmap.Dispose();
|
||||
mp.Bitmap = resizedBitmap;
|
||||
}
|
||||
if (_exportType == ExportFormats.BluraySup)
|
||||
{
|
||||
MakeBluRaySupImage(mp);
|
||||
@ -1945,6 +1952,15 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
return font;
|
||||
}
|
||||
|
||||
private double GetResizeScale()
|
||||
{
|
||||
if (comboBoxResizePercentage.SelectedItem == null)
|
||||
return 1.0;
|
||||
|
||||
var p = int.Parse(comboBoxResizePercentage.SelectedItem.ToString().Replace("%", string.Empty));
|
||||
return p / 100.0;
|
||||
}
|
||||
|
||||
private Bitmap GenerateImageFromTextWithStyle(Paragraph p, out MakeBitmapParameter mbp)
|
||||
{
|
||||
mbp = new MakeBitmapParameter { P = p };
|
||||
@ -1953,7 +1969,18 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
{
|
||||
var index = _subtitle.GetIndex(p);
|
||||
if (index >= 0)
|
||||
return _vobSubOcr.GetSubtitleBitmap(index);
|
||||
{
|
||||
var b = _vobSubOcr.GetSubtitleBitmap(index);
|
||||
var exp = GetResizeScale();
|
||||
if (Math.Abs(exp - 1) > 0.01)
|
||||
{
|
||||
var resizedBitmap = ResizeBitmap(b, (int)Math.Round(b.Width * exp), (int)Math.Round(b.Height * exp));
|
||||
b.Dispose();
|
||||
return resizedBitmap;
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
mbp.AlignLeft = comboBoxHAlign.SelectedIndex == 0;
|
||||
@ -3763,6 +3790,28 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
internal void InitializeFromVobSubOcr(Subtitle subtitle, SubtitleFormat format, string exportType, string fileName, VobSubOcr vobSubOcr, string languageString)
|
||||
{
|
||||
_vobSubOcr = vobSubOcr;
|
||||
if (_vobSubOcr != null && exportType != ExportFormats.VobSub)
|
||||
{
|
||||
comboBoxResizePercentage.Items.Clear();
|
||||
for (int i = 50; i < 400; i++)
|
||||
{
|
||||
comboBoxResizePercentage.Items.Add(i + "%");
|
||||
}
|
||||
comboBoxResizePercentage.Items.Add("500%");
|
||||
comboBoxResizePercentage.SelectedIndex = 50;
|
||||
comboBoxResizePercentage.Visible = true;
|
||||
labelResize.Visible = true;
|
||||
labelResize.Left = buttonColor.Left;
|
||||
labelResize.Top = buttonColor.Top;
|
||||
comboBoxResizePercentage.Left = labelResize.Left + labelResize.Width + 5;
|
||||
comboBoxResizePercentage.Top = labelResize.Top - 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
comboBoxResizePercentage.Visible = false;
|
||||
labelResize.Visible = false;
|
||||
}
|
||||
|
||||
Initialize(subtitle, format, exportType, fileName, null, _videoFileName);
|
||||
|
||||
//set language
|
||||
@ -4901,5 +4950,23 @@ $DROP=[DROPVALUE]" + Environment.NewLine + Environment.NewLine +
|
||||
{
|
||||
_previewTimer.Start();
|
||||
}
|
||||
|
||||
public static Bitmap ResizeBitmap(Bitmap b, int width, int height)
|
||||
{
|
||||
Bitmap newImage = new Bitmap(width, height);
|
||||
using (var g = Graphics.FromImage(newImage))
|
||||
{
|
||||
g.SmoothingMode = SmoothingMode.HighQuality;
|
||||
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
g.PixelOffsetMode = PixelOffsetMode.HighQuality;
|
||||
g.DrawImage(b, new Rectangle(0, 0, width, height));
|
||||
}
|
||||
return newImage;
|
||||
}
|
||||
|
||||
private void comboBoxResizePercentage_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
subtitleListView1_SelectedIndexChanged(null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user