2

imgur の API を使用して写真をアップロードし、明らかにリンクを取得するのに助けが必要です。

IMGUR API: http://api.imgur.com/resources_anon

アップロードが必要な画像の URI を取得できますが、上記の API を実装するにはどうすればよいですか。mime4j と httpmime をダウンロードしてライブラリに追加しましたが、それらの使用方法がわかりません。 、

私はこれを見ましたが、私を混乱させました: Sending images using Http Post

4

1 に答える 1

3

imgurとこの質問をざっと見てから、次のことを思いつきました(ほとんど2つを組み合わせただけです)。うまくいかない場合はお知らせください。

Bitmap bitmap = yourBitmapHere;

// Creates Byte Array from picture
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); // Not sure whether this should be jpeg or png, try both and see which works best
URL url = new URL("http://api.imgur.com/2/upload");

//encodes picture with Base64 and inserts api key
String data = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(Base64.encode(baos.toByteArray(), Base64.DEFAULT).toString(), "UTF-8");
data += "&" + URLEncoder.encode("key", "UTF-8") + "=" + URLEncoder.encode(YOUR_API_KEY, "UTF-8");

// opens connection and sends data
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();

編集: Base64.DEFAULT を Base64.encode の 2 番目のオプションとして渡す必要があるようです。上記の例を更新しました。

編集 2:オラクル サイトに基づいて次のコードを使用し、出力内容を報告できますか。

BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            conn.getInputStream()));

String inputLine;

while ((inputLine = ic.readLine()) != null) 
    System.out.println(inputLine);
in.close();
于 2011-08-19T13:11:48.263 に答える