Now also checks for .png files (wrong file type)

This commit is contained in:
niksedk 2014-10-31 07:14:30 +01:00
parent 94760273fb
commit da4e4977b8
6 changed files with 46 additions and 3 deletions

View File

@ -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>

View File

@ -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
}

View 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)
{

View File

@ -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
{

View File

@ -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;

View File

@ -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
{