Skip to content

Commit fcea277

Browse files
authored
Add files via upload
1 parent e77ff19 commit fcea277

3 files changed

Lines changed: 15 additions & 18 deletions

File tree

nQuant.Master/GilbertCurve.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -273,12 +273,9 @@ private void DiffusePixel(int x, int y)
273273

274274
if (unaccepted) {
275275
if (saliencies != null)
276-
qPixels[bidx] = DitherPixel(x, y, c2, 1.25f);
277-
else if (CIELABConvertor.Y_Diff(pixel, c2) > 3 && CIELABConvertor.U_Diff(pixel, c2) > 3) {
278-
var strength = 1 / 3f;
279-
c2 = BlueNoise.Diffuse(pixel, palette[qPixels[bidx]], strength, strength, x, y);
280-
qPixels[bidx] = ditherable.DitherColorIndex(palette, c2.ToArgb(), bidx);
281-
}
276+
qPixels[bidx] = DitherPixel(x, y, c2, beta);
277+
else if (CIELABConvertor.Y_Diff(pixel, c2) > 3 && CIELABConvertor.U_Diff(pixel, c2) > 3)
278+
qPixels[bidx] = DitherPixel(x, y, c2, 1.25f);
282279

283280
if (palette.Length > 256) {
284281
c2 = palette[qPixels[bidx]];

nQuant.Master/PnnLABQuantizer.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,8 @@ internal override void Pnnquan(int[] pixels, ref Color[] palettes, ref int nMaxC
347347

348348
internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
349349
{
350-
int offset = GetColorIndex(pixel);
350+
var nMaxColors = palette.Length;
351+
int offset = nMaxColors > 32 ? pixel : GetColorIndex(pixel);
351352
if (nearestMap.TryGetValue(offset, out var k))
352353
return k;
353354

@@ -358,7 +359,6 @@ internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
358359
k = 1;
359360

360361
double mindist = 1e100;
361-
var nMaxColors = palette.Length;
362362
GetLab(pixel, out var lab1);
363363

364364
for (int i = k; i < nMaxColors; ++i)
@@ -427,14 +427,14 @@ internal override ushort NearestColorIndex(Color[] palette, int pixel, int pos)
427427

428428
internal ushort HybridColorIndex(Color[] palette, int pixel, int pos)
429429
{
430-
int offset = GetColorIndex(pixel);
430+
var nMaxColors = palette.Length;
431+
int offset = nMaxColors > 32 ? pixel : GetColorIndex(pixel);
431432
if (nearestMap.TryGetValue(offset, out var k))
432433
return k;
433434

434435
var c = Color.FromArgb(pixel);
435436

436437
double mindist = int.MaxValue;
437-
var nMaxColors = palette.Length;
438438
GetLab(pixel, out var lab1);
439439

440440
for (int i = k; i < nMaxColors; ++i)
@@ -493,13 +493,13 @@ protected override ushort ClosestColorIndex(Color[] palette, int pixel, int pos)
493493
if (c.A <= alphaThreshold)
494494
return NearestColorIndex(palette, pixel, pos);
495495

496-
int offset = GetColorIndex(pixel);
496+
var nMaxColors = palette.Length;
497+
int offset = nMaxColors > 32 ? pixel : GetColorIndex(pixel);
497498
if (!closestMap.TryGetValue(offset, out var closest))
498499
{
499500
closest = new ushort[4];
500501
closest[2] = closest[3] = ushort.MaxValue;
501502

502-
var nMaxColors = palette.Length;
503503
for (ushort k = 0; k < nMaxColors; ++k)
504504
{
505505
var c2 = palette[k];

nQuant.Master/PnnQuantizer.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,9 @@ internal virtual void Pnnquan(int[] pixels, ref Color[] palettes, ref int nMaxCo
280280
}
281281
}
282282
internal virtual ushort NearestColorIndex(Color[] palette, int pixel, int pos)
283-
{
284-
int offset = GetColorIndex(pixel);
283+
{
284+
var nMaxColors = palette.Length;
285+
int offset = nMaxColors > 32 ? pixel : GetColorIndex(pixel);
285286
if (nearestMap.TryGetValue(offset, out var k))
286287
return k;
287288

@@ -296,7 +297,6 @@ internal virtual ushort NearestColorIndex(Color[] palette, int pixel, int pos)
296297
pr = pg = pb = pa = 1;
297298

298299
double mindist = int.MaxValue;
299-
var nMaxColors = palette.Length;
300300
for (int i = k; i < nMaxColors; ++i)
301301
{
302302
var c2 = palette[i];
@@ -330,7 +330,8 @@ protected virtual ushort ClosestColorIndex(Color[] palette, int pixel, int pos)
330330
if (c.A <= alphaThreshold)
331331
return NearestColorIndex(palette, pixel, pos);
332332

333-
int offset = GetColorIndex(pixel);
333+
var nMaxColors = palette.Length;
334+
int offset = nMaxColors > 32 ? pixel : GetColorIndex(pixel);
334335
if (!closestMap.TryGetValue(offset, out var closest))
335336
{
336337
closest = new ushort[4];
@@ -339,8 +340,7 @@ protected virtual ushort ClosestColorIndex(Color[] palette, int pixel, int pos)
339340
double pr = PR, pg = PG, pb = PB, pa = PA;
340341
if(palette.Length < 3)
341342
pr = pg = pb = pa = 1;
342-
343-
var nMaxColors = palette.Length;
343+
344344
for (; k < nMaxColors; ++k)
345345
{
346346
var c2 = palette[k];

0 commit comments

Comments
 (0)