mirror of
https://github.com/SubtitleEdit/subtitleedit.git
synced 2024-10-27 14:32:35 +01:00
Image compare - a bit more aggresive splitter of lines - thx Gabriele :)
git-svn-id: https://subtitleedit.googlecode.com/svn/trunk@2122 99eadd0c-20b8-1223-b5c4-2a2b2df33de2
This commit is contained in:
parent
12d473380d
commit
ea7faddaae
@ -171,9 +171,71 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
|
|
||||||
}
|
}
|
||||||
if (size > 2)
|
if (size > 2)
|
||||||
|
{
|
||||||
|
if (size == bmp.Height)
|
||||||
|
{
|
||||||
|
if (size > 100)
|
||||||
|
return SplitVerticalTransparentOrBlack(bmp, 8);
|
||||||
|
else
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1))));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return parts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<ImageSplitterItem> SplitVerticalTransparentOrBlack(NikseBitmap bmp, int lineMinHeight)
|
||||||
|
{
|
||||||
|
int startY = 0;
|
||||||
|
int size = 0;
|
||||||
|
var parts = new List<ImageSplitterItem>();
|
||||||
|
for (int y = 0; y < bmp.Height; y++)
|
||||||
|
{
|
||||||
|
bool allTransparent = true;
|
||||||
|
for (int x = 0; x < bmp.Width; x++)
|
||||||
|
{
|
||||||
|
Color c = bmp.GetPixel(x, y);
|
||||||
|
if (c.A > 20 && c.R + c.G + c.B > 20)
|
||||||
|
{
|
||||||
|
allTransparent = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (allTransparent)
|
||||||
|
{
|
||||||
|
if (size > 8 && size <= lineMinHeight)
|
||||||
|
{
|
||||||
|
size++; // at least 5 pixels, like top of 'i'
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (size > 8)
|
||||||
{
|
{
|
||||||
NikseBitmap part = bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1));
|
NikseBitmap part = bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1));
|
||||||
|
// part.Save("c:\\line_0_to_width.bmp");
|
||||||
parts.Add(new ImageSplitterItem(0, startY, part));
|
parts.Add(new ImageSplitterItem(0, startY, part));
|
||||||
|
// bmp.Save("c:\\original.bmp");
|
||||||
|
}
|
||||||
|
size = 0;
|
||||||
|
startY = y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
size++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (size > 2)
|
||||||
|
{
|
||||||
|
if (size == bmp.Height)
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp));
|
||||||
|
else
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1))));
|
||||||
}
|
}
|
||||||
return parts;
|
return parts;
|
||||||
}
|
}
|
||||||
@ -222,8 +284,17 @@ namespace Nikse.SubtitleEdit.Logic
|
|||||||
}
|
}
|
||||||
if (size > 2)
|
if (size > 2)
|
||||||
{
|
{
|
||||||
NikseBitmap part = bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1));
|
if (size == bmp.Height)
|
||||||
parts.Add(new ImageSplitterItem(0, startY, part));
|
{
|
||||||
|
if (size > 100)
|
||||||
|
return SplitVerticalTransparentOrBlack(bmp, lineMinHeight);
|
||||||
|
else
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
parts.Add(new ImageSplitterItem(0, startY, bmp.CopyRectangle(new Rectangle(0, startY, bmp.Width, size + 1))));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return parts;
|
return parts;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user