mirror of
https://github.com/zxing/zxing.git
synced 2024-11-09 20:44:03 -08:00
Issue 492
git-svn-id: https://zxing.googlecode.com/svn/trunk@1533 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
eee9068f2a
commit
aee6be71f3
2
AUTHORS
2
AUTHORS
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue