mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-26 23:12:38 +02:00
Now also checks for .png files (wrong file type)
This commit is contained in:
parent
94760273fb
commit
da4e4977b8
@ -1224,6 +1224,7 @@ Continue?</SubtitleAppendPrompt>
|
||||
<ErrorLoadIdx>Cannot read/edit .idx files. Idx files are a part of an idx/sub file pair (also called VobSub), and Subtitle Edit can open the .sub file.</ErrorLoadIdx>
|
||||
<ErrorLoadRar>This file seems to be a compressed .rar file. Subtitle Edit cannot open compressed files.</ErrorLoadRar>
|
||||
<ErrorLoadZip>This file seems to be a compressed .zip file. Subtitle Edit cannot open compressed files.</ErrorLoadZip>
|
||||
<ErrorLoadPng>This file seems to be a PNG image file. Subtitle Edit cannot open PNG files.</ErrorLoadPng>
|
||||
</Main>
|
||||
<MatroskaSubtitleChooser>
|
||||
<Title>Choose subtitle from Matroska file</Title>
|
||||
|
@ -71,7 +71,9 @@ namespace Nikse.SubtitleEdit.Core
|
||||
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
var buffer = new byte[4];
|
||||
fs.Read(buffer, 0, 4);
|
||||
var count = fs.Read(buffer, 0, buffer.Length);
|
||||
if (count != buffer.Length)
|
||||
return false;
|
||||
return buffer[0] == 0x50 // P
|
||||
&& buffer[1] == 0x4B // K
|
||||
&& buffer[2] == 0x03 // (ETX)
|
||||
@ -84,7 +86,9 @@ namespace Nikse.SubtitleEdit.Core
|
||||
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
var buffer = new byte[4];
|
||||
fs.Read(buffer, 0, 4);
|
||||
var count = fs.Read(buffer, 0, buffer.Length);
|
||||
if (count != buffer.Length)
|
||||
return false;
|
||||
return buffer[0] == 0x52 // R
|
||||
&& buffer[1] == 0x61 // a
|
||||
&& buffer[2] == 0x72 // r
|
||||
@ -92,6 +96,26 @@ namespace Nikse.SubtitleEdit.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsPng(string fileName)
|
||||
{
|
||||
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
{
|
||||
var buffer = new byte[8];
|
||||
var count = fs.Read(buffer, 0, buffer.Length);
|
||||
if (count != buffer.Length)
|
||||
return false;
|
||||
return buffer[0] == 137
|
||||
&& buffer[1] == 80
|
||||
&& buffer[2] == 78
|
||||
&& buffer[3] == 71
|
||||
&& buffer[4] == 13
|
||||
&& buffer[5] == 10
|
||||
&& buffer[6] == 26
|
||||
&& buffer[7] == 10;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static bool IsBluRaySup(string fileName)
|
||||
{
|
||||
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
|
||||
@ -110,7 +134,9 @@ namespace Nikse.SubtitleEdit.Core
|
||||
{
|
||||
fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
|
||||
var buffer = new byte[3761];
|
||||
fs.Read(buffer, 0, 3761);
|
||||
var count = fs.Read(buffer, 0, buffer.Length);
|
||||
if (count != buffer.Length)
|
||||
return false;
|
||||
return buffer[0] == 0x47 && buffer[188] == 0x47 // 47hex (71 dec or 'G') == TS sync byte
|
||||
|| buffer[0] == 0x54 && buffer[1] == 0x46 && buffer[2] == 0x72 && buffer[3760] == 0x47; // Topfield REC TS file
|
||||
}
|
||||
|
@ -2814,6 +2814,16 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
return;
|
||||
}
|
||||
|
||||
// check for .png file
|
||||
if (format == null && fi.Length > 100 && FileUtil.IsPng(fileName))
|
||||
{
|
||||
if (string.IsNullOrEmpty(_language.ErrorLoadPng))
|
||||
MessageBox.Show("This file seems to be a PNG image file. Subtitle Edit cannot open PNG files.");
|
||||
else
|
||||
MessageBox.Show(_language.ErrorLoadPng);
|
||||
return;
|
||||
}
|
||||
|
||||
if (format == null && fi.Length < 100 * 1000000 && TransportStreamParser.IsDvbSup(fileName))
|
||||
{
|
||||
ImportSubtitleFromDvbSupFile(fileName);
|
||||
@ -9145,6 +9155,7 @@ namespace Nikse.SubtitleEdit.Forms
|
||||
Refresh();
|
||||
Cursor.Current = Cursors.WaitCursor;
|
||||
List<SubtitleSequence> sub = matroska.GetMatroskaSubtitle(fileName, (int)matroskaSubtitleInfo.TrackNumber, out isValid, MatroskaProgress);
|
||||
MessageBox.Show(string.Format("Matroska reading took {0:0.00} seconds", stopwatch.ElapsedMilliseconds / 1000.0));
|
||||
Cursor.Current = Cursors.Default;
|
||||
if (isValid)
|
||||
{
|
||||
|
@ -1132,6 +1132,7 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
ErrorLoadIdx = "Cannot read/edit .idx files. Idx files are a part of an idx/sub file pair (also called VobSub), and Subtitle Edit can open the .sub file.",
|
||||
ErrorLoadRar = "This file seems to be a compressed .rar file. Subtitle Edit cannot open compressed files.",
|
||||
ErrorLoadZip = "This file seems to be a compressed .zip file. Subtitle Edit cannot open compressed files.",
|
||||
ErrorLoadPng = "This file seems to be a PNG image file. Subtitle Edit cannot open PNG files.",
|
||||
|
||||
Menu = new LanguageStructure.Main.MainMenu
|
||||
{
|
||||
|
@ -2621,6 +2621,9 @@ namespace Nikse.SubtitleEdit.Logic
|
||||
case "Main/ErrorLoadZip":
|
||||
language.Main.ErrorLoadZip = reader.Value;
|
||||
break;
|
||||
case "Main/ErrorLoadPng":
|
||||
language.Main.ErrorLoadPng = reader.Value;
|
||||
break;
|
||||
case "Main/Menu/File/Title":
|
||||
language.Main.Menu.File.Title = reader.Value;
|
||||
break;
|
||||
|
@ -1017,6 +1017,7 @@
|
||||
public string ErrorLoadIdx { get; set; }
|
||||
public string ErrorLoadRar { get; set; }
|
||||
public string ErrorLoadZip { get; set; }
|
||||
public string ErrorLoadPng { get; set; }
|
||||
|
||||
public class MainMenu
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user