質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

8419閲覧

[Java]ファイルパスから読み込んだ画像を回転させたい。

yamamoto020316

総合スコア29

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2016/07/26 06:26

下記は、ファイルパスより、画像をBASE64に変更するメソッドです。
もし、この画像を上下左右に回転させたい場合、どのような処理がありますか?

Files.readAllBytes : java.nio.file.Files
Base64Utils : org.springframework.util.Base64Utils

java

1public static String base64Encode(String filePath) throws Exception { 2 String fullPath = filePath; 3 File file = new File(fullPath); 4 if(file.exists()){ 5 byte[] bytes = Files.readAllBytes(file.toPath()); 6 byte[] encoded = Base64Utils.encode(bytes); 7 return new String(encoded); 8 } 9 return ""; 10 11 }

初歩的な質問ですが、ご返答よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

画像の回転と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/26 07:20

編集2016/07/26 07:51
Yossi_1982

総合スコア95

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamamoto020316

2016/07/27 00:43

上記の回答で上手く動きました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問