mirror of
https://github.com/zxing/zxing.git
synced 2025-01-12 11:47:26 -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
|
Sanford Squires
|
||||||
Sean Owen (Google)
|
Sean Owen (Google)
|
||||||
Simon Flannery (Ericsson)
|
Simon Flannery (Ericsson)
|
||||||
|
Steven Parkes
|
||||||
Suraj Supekar
|
Suraj Supekar
|
||||||
Sven Klinkhamer
|
Sven Klinkhamer
|
||||||
Thomas Gerbet
|
Thomas Gerbet
|
||||||
Vince Francis (LifeMarks)
|
Vince Francis (LifeMarks)
|
||||||
|
Yakov Okshtein (Google)
|
||||||
|
|
|
@ -29,6 +29,7 @@ import junit.framework.TestCase;
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
import javax.imageio.ImageIO;
|
||||||
import java.awt.geom.AffineTransform;
|
import java.awt.geom.AffineTransform;
|
||||||
|
import java.awt.geom.Rectangle2D;
|
||||||
import java.awt.image.AffineTransformOp;
|
import java.awt.image.AffineTransformOp;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.awt.image.BufferedImageOp;
|
import java.awt.image.BufferedImageOp;
|
||||||
|
@ -310,9 +311,25 @@ public abstract class AbstractBlackBoxTestCase extends TestCase {
|
||||||
if (degrees == 0.0f) {
|
if (degrees == 0.0f) {
|
||||||
return original;
|
return original;
|
||||||
} else {
|
} 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();
|
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);
|
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);
|
return op.filter(original, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,9 +28,9 @@ public final class FalsePositivesBlackBoxTestCase extends AbstractNegativeBlackB
|
||||||
public FalsePositivesBlackBoxTestCase() {
|
public FalsePositivesBlackBoxTestCase() {
|
||||||
super("test/data/blackbox/falsepositives");
|
super("test/data/blackbox/falsepositives");
|
||||||
addTest(2, 0.0f);
|
addTest(2, 0.0f);
|
||||||
addTest(0, 90.0f);
|
addTest(1, 90.0f);
|
||||||
addTest(1, 180.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, 0.0f);
|
||||||
addTest(1, 90.0f);
|
addTest(1, 90.0f);
|
||||||
addTest(1, 180.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() {
|
public UnsupportedBlackBoxTestCase() {
|
||||||
super("test/data/blackbox/unsupported");
|
super("test/data/blackbox/unsupported");
|
||||||
addTest(1, 0.0f);
|
addTest(1, 0.0f);
|
||||||
addTest(0, 90.0f);
|
addTest(1, 90.0f);
|
||||||
addTest(1, 180.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() {
|
public QRCodeBlackBox2TestCase() {
|
||||||
super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
|
super("test/data/blackbox/qrcode-2", new MultiFormatReader(), BarcodeFormat.QR_CODE);
|
||||||
addTest(26, 26, 0.0f);
|
addTest(26, 26, 0.0f);
|
||||||
addTest(24, 24, 90.0f);
|
addTest(25, 25, 90.0f);
|
||||||
addTest(24, 24, 180.0f);
|
addTest(24, 24, 180.0f);
|
||||||
addTest(22, 23, 270.0f);
|
addTest(25, 25, 270.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue