画像の回転とBase64の関連性がいまいちわかりませんが、
画像の回転のみであれば、いくつか方法があります。
・アフィン変換を用いて画像の回転を行う方法
->AffineTransofromクラスを用いて実施します。
・OpenCVなどの画像処理ライブラリを用いて回転する
->外部ライブラリを利用して回転させます。
アフィン変換を用いて実施する場合の例をあげます。
private byte[] rotateImage(String filePath) {
try {
BufferedImage inBuff = ImageIO.read(new File(filePath));
AffineTransform affine = new AffineTransform();
//90度のときの回転処理
affine.setToRotation(Math.toRadians(90), inBuff.getHeight()/2, inBuff.getHeight()/2);
//180度のときの回転処理
//affine.setToRotation(Math.toRadians(180), inBuff.getWidth()/2, inBuff.getHeight()/2);
//270度のときの回転処理
//affine.rotate(Math.toRadians(270), inBuff.getWidth()/2, inBuff.getWidth()/2);
AffineTransformOp op = new AffineTransformOp(affine, AffineTransformOp.TYPE_BICUBIC);
//180度のときのアウトプット画像バッファ
//BufferedImage outBuff = new BufferedImage(inBuff.getWidth(), inBuff.getHeight(), inBuff.getType());
//90度、270度のときのアウトプット画像バッファ
BufferedImage outBuff = new BufferedImage(inBuff.getHeight(), inBuff.getWidth(), inBuff.getType());
op.filter(inBuff, outBuff);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(outBuff, "jpg", baos);
return baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
これで回転したイメージをバイト配列にできると思います。
この返却値をBase64に変換してはどうでしょうか?
このプログラムは90度の回転です。
180度、270度のところはコメント切り替えてください。
動的に変更したければ、switch文などでできるよう変更する必要あります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/27 00:43