2016-11-19 32 views
0

これについて多くの質問がありましたが、それらはすべてC#です。それらのどれもJavaであり、私はこれのための適切なライブラリを見つけることができませんでした。JavaまたはAndroidを使用してidenticonを作成するにはどうすればよいですか?

image

何ライブラリそれを文字列/ハッシュを与えることで、プログラムで私のためにこれを行うことができますか?このアルゴリズムはStackExchangeで実際に実装されています。

答えて

1

私はこの問題を解決:あなたのidenticonsを生成するために使用することができ、コードhttp://www.davidhampgonsalves.com/Identicons

は、Javaのコードは、次のいずれかがあります。

私はGravatarを使用しました。私は最初の画像のリンクを持って、このようなStringとしてそれを保存:次に

String identiconURL = "http://www.gravatar.com/avatar/" + userID + "?s=55&d=identicon&r=PG"; 

、私はグライド使用:理論的に質問に答えることがあり、この一方で

Glide.with(ProfilePictureChooserActivity.this) 
     .load(identiconURL) 
     .centerCrop() 
     .into(imageView); 
0

このリンクを見ることができます。

public static BufferedImage generateIdenticons(String text, int image_width, int image_height){ 
     int width = 5, height = 5; 

     byte[] hash = text.getBytes(); 

     BufferedImage identicon = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); 
     WritableRaster raster = identicon.getRaster(); 

     int [] background = new int [] {255,255,255, 0}; 
     int [] foreground = new int [] {hash[0] & 255, hash[1] & 255, hash[2] & 255, 255}; 

     for(int x=0 ; x < width ; x++) { 
      //Enforce horizontal symmetry 
      int i = x < 3 ? x : 4 - x; 
      for(int y=0 ; y < height; y++) { 
       int [] pixelColor; 
       //toggle pixels based on bit being on/off 
       if((hash[i] >> y & 1) == 1) 
        pixelColor = foreground; 
       else 
        pixelColor = background; 
       raster.setPixel(x, y, pixelColor); 
      } 
     } 

     BufferedImage finalImage = new BufferedImage(image_width, image_height, BufferedImage.TYPE_INT_ARGB); 

     //Scale image to the size you want 
     AffineTransform at = new AffineTransform(); 
     at.scale(image_width/width, image_height/height); 
     AffineTransformOp op = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); 
     finalImage = op.filter(identicon, finalImage); 

     return finalImage; 
} 
+0

を、[それが望ましいだろう] (//meta.stackoverflow.com/q/8259)ここに回答の重要な部分を含めて、参考のためのリンクを提供してください。そのリンクは、将来の読者を混乱させることができるアンドロイド用ではなく、プレーンなJavaのための使用を提供します。例を挙げて、生成されたビットマップを画像ビューに設定します –

+0

すぐにやります。ヒントをありがとう。私はスタックオーバーフローでアクティブなユーザーであることを初めて知っています。 –

関連する問題