处理尺寸不一致
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user