mirror of
https://github.com/sismics/docs.git
synced 2024-06-30 21:41:23 +02:00
53 lines
1.6 KiB
Java
53 lines
1.6 KiB
Java
package com.sismics.util;
|
|
|
|
import java.awt.*;
|
|
import java.awt.geom.AffineTransform;
|
|
import java.awt.image.BufferedImage;
|
|
import java.awt.image.BufferedImageOp;
|
|
import java.awt.image.ImagingOpException;
|
|
|
|
/**
|
|
* Extends Scalr.
|
|
*
|
|
* @author bgamard
|
|
*/
|
|
public class Scalr extends org.imgscalr.Scalr {
|
|
/**
|
|
* Rotate an image by a specific amount.
|
|
*
|
|
* @param src Source image
|
|
* @param rotation Rotation angle
|
|
* @param ops Options
|
|
* @return Rotated image
|
|
* @throws IllegalArgumentException
|
|
* @throws ImagingOpException
|
|
*/
|
|
public static BufferedImage rotate(BufferedImage src, double rotation, BufferedImageOp... ops) throws IllegalArgumentException, ImagingOpException {
|
|
long t = System.currentTimeMillis();
|
|
if (src == null) {
|
|
throw new IllegalArgumentException("src cannot be null");
|
|
} else {
|
|
if (DEBUG) {
|
|
log(0, "Rotating Image [%s]...", rotation);
|
|
}
|
|
|
|
AffineTransform tx = new AffineTransform();
|
|
tx.rotate(Math.toRadians(rotation));
|
|
|
|
BufferedImage result = createOptimalImage(src, src.getWidth(), src.getHeight());
|
|
Graphics2D g2d = result.createGraphics();
|
|
g2d.drawImage(src, tx, null);
|
|
g2d.dispose();
|
|
if (DEBUG) {
|
|
log(0, "Rotation Applied in %d ms, result [width=%d, height=%d]", System.currentTimeMillis() - t, result.getWidth(), result.getHeight());
|
|
}
|
|
|
|
if (ops != null && ops.length > 0) {
|
|
result = apply(result, ops);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|