Issue 492

git-svn-id: https://zxing.googlecode.com/svn/trunk@1533 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2010-08-14 19:11:49 +00:00
parent eee9068f2a
commit aee6be71f3
6 changed files with 27 additions and 8 deletions

View file

@ -48,7 +48,9 @@ Ryan Alford
Sanford Squires
Sean Owen (Google)
Simon Flannery (Ericsson)
Steven Parkes
Suraj Supekar
Sven Klinkhamer
Thomas Gerbet
Vince Francis (LifeMarks)
Yakov Okshtein (Google)

View file

@ -29,6 +29,7 @@ import junit.framework.TestCase;
import javax.imageio.ImageIO;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
@ -310,9 +311,25 @@ public abstract class AbstractBlackBoxTestCase extends TestCase {
if (degrees == 0.0f) {
return original;
} else {
double radians = Math.toRadians(degrees);
// Transform simply to find out the new bounding box (don't actually run the image through it)
AffineTransform at = new AffineTransform();
at.rotate(Math.toRadians(degrees), original.getWidth() / 2.0, original.getHeight() / 2.0);
at.rotate(radians, original.getWidth() / 2.0, original.getHeight() / 2.0);
BufferedImageOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);
Rectangle2D r = op.getBounds2D(original);
int width = (int) Math.ceil(r.getWidth());
int height = (int) Math.ceil(r.getHeight());
// Real transform, now that we know the size of the new image and how to translate after we rotate
// to keep it centered
at = new AffineTransform();
at.rotate(radians, width / 2.0, height / 2.0);
at.translate(((width - original.getWidth()) / 2.0),
((height - original.getHeight()) / 2.0));
op = new AffineTransformOp(at, AffineTransformOp.TYPE_BICUBIC);
return op.filter(original, null);
}
}

View file

@ -28,9 +28,9 @@ public final class FalsePositivesBlackBoxTestCase extends AbstractNegativeBlackB
public FalsePositivesBlackBoxTestCase() {
super("test/data/blackbox/falsepositives");
addTest(2, 0.0f);
addTest(0, 90.0f);
addTest(1, 90.0f);
addTest(1, 180.0f);
addTest(1, 270.0f);
addTest(2, 270.0f);
}
}

View file

@ -30,7 +30,7 @@ public final class PartialBlackBoxTestCase extends AbstractNegativeBlackBoxTestC
addTest(1, 0.0f);
addTest(1, 90.0f);
addTest(1, 180.0f);
addTest(0, 270.0f);
addTest(1, 270.0f);
}
}

View file

@ -28,9 +28,9 @@ public final class UnsupportedBlackBoxTestCase extends AbstractNegativeBlackBoxT
public UnsupportedBlackBoxTestCase() {
super("test/data/blackbox/unsupported");
addTest(1, 0.0f);
addTest(0, 90.0f);
addTest(1, 90.0f);
addTest(1, 180.0f);
addTest(0, 270.0f);
addTest(1, 270.0f);
}
}

View file

@ -28,9 +28,9 @@ public final class QRCodeBlackBox2TestCase extends AbstractBlackBoxTestCase {
public QRCodeBlackBox2TestCase() {
super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
addTest(26, 26, 0.0f);
addTest(24, 24, 90.0f);
addTest(25, 25, 90.0f);
addTest(24, 24, 180.0f);
addTest(22, 23, 270.0f);
addTest(25, 25, 270.0f);
}
}