处理尺寸不一致

This commit is contained in:
Ukawka
2026-09-20 22:36:20 +08:00
parent 99d65377ab
commit a00a5621cf
7 changed files with 114 additions and 18 deletions
+24
View File
@@ -106,6 +106,30 @@ class CompletionTests(unittest.TestCase):
self.assertTrue(qa['accepted'])
self.assertEqual(qa['new_pixels'], 200)
def test_uniform_canvas_recovery_preserves_source_and_still_rejects_changes(self):
original_candidate = Image.open(self.root/'candidate.png').convert('RGBA')
larger = original_candidate.resize((256, 256), Image.Resampling.NEAREST)
file = self.root/'large.png'
larger.save(file)
output = self.folder/'recovered.png'
qa = merge_candidate(self.folder, file, output, 'uniform')
self.assertTrue(qa['accepted'])
self.assertTrue(qa['canvas_resampled'])
self.assertEqual(qa['returned_size'], [256, 256])
self.assertEqual(qa['canvas_scale'], .5)
merged = np.array(Image.open(output))
np.testing.assert_array_equal(merged[54:74, 49:69], self.source[20:40, 20:40])
self.assertEqual(Image.open(file).size, (256, 256))
for name, im, reason in [
('wide', larger.resize((260, 256)), 'CANVAS_ASPECT_RATIO_MISMATCH'),
('shifted', Image.fromarray(np.roll(np.array(larger), 32, axis=1)), 'VISIBLE_ALIGNMENT_MISMATCH'),
]:
file = self.root/f'{name}.png'
im.save(file)
qa = merge_candidate(self.folder, file, self.folder/f'{name}-merged.png', 'uniform')
self.assertFalse(qa['accepted'])
self.assertIn(reason, qa['reasons'])
def test_disconnected_additions_are_not_merged(self):
candidate = np.array(Image.open(self.folder/'visible.png'))
candidate[54:57, 76:79] = [180, 50, 20, 255]