0

誰かが以下のコードをチェックして、もっと良い方法があるかどうかを確認してください。私が本当に心配しているのはパフォーマンスですが、これで何かありますか? そうでない場合、コードの読みやすさを改善するために改善できることはありますか?

try {

    URL url = new URL("http://www.pudim.com.br/SiteBuilder/UploadUsers/pudim.com.br/pudim.jpg");
    URLConnection uc = url.openConnection();
    String type = uc.getContentType();
    BufferedImage image = ImageIO.read(url);
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ImageIO.write(image, "jpg", os);
    byte[] bytes = os.toByteArray();
    InputStream is = new ByteArrayInputStream(bytes);

    // not important :) ...
} catch (AmazonServiceException e) {
    e.printStackTrace();
} catch (AmazonClientException e) {
    e.printStackTrace();
} catch (MalformedURLException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

どんな考慮事項も歓迎します。

ありがとう!

4

2 に答える 2

0

URL から読み取るときに発生する通常のパフォーマンスの問題 (接続性/帯域幅/可用性の低下) がすべて発生します。同じ解決策も適用されます。ローカル キャッシュを作成して使用し、バックグラウンド スレッドでロード/ヘビー IO を実行します (メイン UI スレッドのブロックを回避するため)。スタンドアロンのパラメーター化された関数でもコードをラップする必要があります...

この例の結果で実際には何もしていませんInputStream-おそらく、必要なものを取得するために全体的に必要かどうかを検討してください-そのままで、毎回画像全体をメモリにロードしています-すべての場合は完全に必要ではありません'やっていることは、ディスクに保存することです。

于 2012-12-11T00:45:45.577 に答える
0

画像をダウンロードするだけの場合は、 を使用しBufferedInputStream て、下のネットワークからデータをできるだけ速く読み取れるようにします。

同様に、 を使用して、ローカル ファイルのBufferedOutputStreamにダンプすることができます。FileOutputStream

画像処理を行う必要はありません。

于 2012-12-11T00:48:27.113 に答える