*

【Java】Google Mapsを画像化し、それをファイルに書き出すことなくEvernote連携

公開日: : 最終更新日:2013/09/20 Java , , , ,

必要な環境

・Java実行環境
・EvernoteのJava APIが使用出来る環境

大まかな手順

1.Google Static Maps API に対して、HTTP GET(欲しい地図情報をURLに記載する)
2.RESPONSEされた画像を、BufferedImageに入れる
3.BufferedImageをbyte[]に変換し、Evernoteにアップロード

コード

private void private void createNote(String inputUrl) throws Exception {
	// 新規ノート作成
	Note note = new Note();
	note.setTitle("画像アップロードテスト");
	// Evernoteに送るDataファイル
	Data dataImage = new Data();

	try {
		// Google Static Maps API V2を用いて、標準のHTTPリクエストで送信されたURLパラメータに基づいて地図を作成し、画像として返す
		// リクエストで帰ってきたものを、BufferedImageに変換
		URL url = new URL(inputUrl);
		URLConnection con = url.openConnection();
		InputStream in = con.getInputStream();
		BufferedImage img = ImageIO.read(in);
		in.close();

		// BufferedImageをEvernote用にbyteファイルに変換
		byte[] imageInByte;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ImageIO.write(img, "png", baos);
		baos.flush();
		imageInByte = baos.toByteArray();
		baos.close();

		// Dataファイルに格納
		dataImage.setSize(imageInByte.length);
		dataImage.setBodyHash(MessageDigest.getInstance("MD5").digest(imageInByte));
		dataImage.setBody(imageInByte);

	} catch (Exception e) {
		throw new RuntimeException(e);
	}

	//mimeTypeを指定
	String mimeType = "image/png";

	// 画像ファイルをnoteに入れるため、Resourceを作成。
	Resource resource = new Resource();
	resource.setData(dataImage);
	resource.setMime(mimeType);

	// NoteにResourceを追加
	note.addToResources(resource);

	// NoteにMD5ハッシュを記載し、ResourceのMD5ハッシュと対応させる
	String hashHex = bytesToHex(resource.getData().getBodyHash());

	// Evernote用のマークアップ言語で記述する必要がある。
	//詳細は、http://dev.evernote.com/documentation/cloud/chapters/ENML.php
	String content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
			+ "<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">"
			+ "<en-note>"
			+ "<en-media type=\"image/png\" hash=\"" + hashHex + "\"/>"
			+ "</en-note>";
	note.setContent(content);

	// createNoteメソッドを使ってEvernoteにアップロード
	Note createdNote = noteStore.createNote(authToken, note);
	newNoteGuid = createdNote.getGuid();

	System.out.println("作成完了。GUID: "+ newNoteGuid);
}

String inputUrlには、Static Maps API V2 デベロッパー ガイドを参考にして、下記のようなURLを作成する。

http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318&markers=color:red%7Ccolor:red%7Clabel:C%7C40.718217,-73.998284&sensor=false

上記URLを入力して実行すると、画像がアップロードされる。

以上。

参考にしたサイト

Java Google Maps から地図画像を取得する
Java画像メモ
How to convert byte[] to BufferedImage in Java

関連記事

記事はありませんでした

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

small-icon.hover
【機械学習】Stanford University Machine Learning / Week4【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week3【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week2【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

small-icon.hover
【機械学習】Stanford University Machine Learning / Week1【学習メモ】

0.何の学習メモ? ・スタンフォード大学がCourseraをプラ

ダウンロード
【WebSocket】Safariからlocalhostに対してハンドシェイクする際の注意点

この記事の対象者 とりあえずlocalhostで色々と試したい

→もっと見る

PAGE TOP ↑