Posts Tagged ‘ç”»åƒå‡¦ç†’

Android NDKを使用ã—ã¦Java言語ã¨C言語ã§é€Ÿåº¦æ¯”較をã™ã‚‹ï¼ˆç”»åƒå‡¦ç†ç·¨ï¼‰

No Comments »

ã“ã‚“ã«ã¡ã¯Big iguchiã§ã™ã€‚

å‰å›žã®ã€ŒAndroid NDKを使用ã—ã¦Java言語ã¨C言語ã§é€Ÿåº¦æ¯”較をã™ã‚‹ã€ã«å¼•ãç¶šãAndroid NDKã§éŠã‚“ã§ã¿ã¾ã™ã€‚

今回ã¯ãŸã ã€è¨ˆç®—ã™ã‚‹ã ã‘ã§ãªãå°‘ã—実用的ã«ç”»åƒã®å¹³å‡RGBã‚’å–å¾—ã™ã‚‹ã‚³ãƒ¼ãƒ‰ã‚’Javaã¨Cè¨€èªžã§æ¯”較ã—よã†ã¨æ€ã„ã¾ã™ã€‚

ã¾ãšã¯ã€ã¡ã‚‡ã£ã¨ç”»åƒã®èª¬æ˜Žã€‚。。。

Androidã®å ´åˆã€ç”»åƒãƒ‡ãƒ¼ã‚¿ã‚’Bitmapã§æ‰±ã†ã“ã¨ãŒå¤šã„ã®ã§ã™ãŒã€ã“ã®ã¾ã¾ã ã¨Cè¨€èªžã§æ‰±ã„ã«ãã„ã®ã§ã€ã€ŒBitmap.setPixel()ã‚’setPixels()ã«å¤‰ãˆãŸã‚‰ï¼“å€é€Ÿããªã£ãŸã‚ˆã€ã§daichi1128ãŒè¨€ã£ã¦ã„るよã†ã«getPixelsã§intåž‹ã®é…列ã¨ã—ã¦è‰²æƒ…報をå–å¾—ã—ã¾ã™ã€‚以下ã«ãªã‚Šã¾ã™ã€‚
bitmap.getPixels(pixels, 0, originalWidth, 0, 0, originalWidth, originalHeight);

getPixelsã®ç¬¬ï¼‘引数ã«ã¯bitmapã®è‰²æƒ…å ±ãŒintåž‹ã§ä»¥ä¸‹ã®ãƒ•ォーマットã§è¿”ã£ã¦ãã¾ã™ã€‚
0xFFFFFFFF

24~31ビット alpha
16~23ビット red
8~15ビット green
0~7ビット blue

ã¤ã¾ã‚Šã€ä»¥ä¸‹ã®ã‚³ãƒ¼ãƒ‰ã§ãƒ”クセル毎ã«RGBカラーをå–å¾—ã§ãã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã­ã€‚

ã¤ãŽã«ã€é…列をJavaã‹ã‚‰Cè¨€èªžã«æ¸¡ã™ã¨ãã®èª¬æ˜Žã€‚。。。

ã“ã®å‡¦ç†ã‚’C言語ã§è¡Œã„ãŸã„ãŸã‚ã«ã€ã“ã®ç¬¬ï¼‘引数ã®inté…列をJavaã‹ã‚‰Cè¨€èªžã«æ¸¡ã›ã‚Œã°ã„ã„ã§ã™ã­ã€‚方法ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã—ãŸã€‚
・Java言語å´

・C言語å´

åŒæ§˜ãªå‡¦ç†ã‚’Javaã§ã‚‚記述ã—ã¦ã€å‰å›žã¨åŒæ§˜ã«å®Ÿè¡Œã—ã¦ã¿ã¾ã—ãŸã€‚

çµæžœã¯ä»¥ä¸‹ã«ãªã‚Šã¾ã™ã€‚。。。

result
Javaã¨Nativeã§ç­”ãˆã‚‚一致ã—ã¦ã¾ã™ã­ã€‚æµ·ã®ç”»åƒã‚’使ã£ã¦ã¿ãŸã‚“ã§ã™ãŒblueã¨greenã®å¹³å‡å€¤ãŒé«˜ã„ã®ã§ãã¡ã‚“ã¨è§£æžã§ãã¦ã¾ã™ã­ã€‚ãã—ã¦é€Ÿåº¦ã‚‚Nativeã®æ–¹ãŒã‹ãªã‚Šæ—©ã„。画åƒå‡¦ç†ã«ã‚‚Android NDKã¯å分使ãˆãã†ã§ã™ã€‚
ã“れを応用ã™ã‚Œã°ã€ã€ŒAndroidã§ãƒ¢ã‚¶ã‚¤ã‚¯ç”»åƒã‚’作ã£ã¦ã¿ã‚‹ã€ã®ãƒ¢ã‚¶ã‚¤ã‚¯å‡¦ç†ã‚„ä»–ã®ç”»åƒå‡¦ç†ã‚‚高速化出æ¥ã‚‹ã¨æ€ã„ã¾ã™ã€‚皆ã•ã‚“ãœã²ã‚„ã£ã¦ã¿ã¦ãã ã•ã„。

今回ã¯ä»¥ä¸Šã¨ãªã‚Šã¾ã™ã€‚
æµ·ã«è¡ŒããŸã„。


Bitmap.setPixel()ã‚’setPixels()ã«å¤‰ãˆãŸã‚‰ï¼“å€é€Ÿããªã£ãŸã‚ˆ

No Comments »

ãšã„ã¶ã‚“å‰ã«ç”»åƒã‚’モザイク風ã«åŠ å·¥ã™ã‚‹ã‚¨ãƒ³ãƒˆãƒªã‚’書ãã¾ã—ãŸãŒã€ã‚れを少ã—ã„ã˜ã£ãŸã‚‰ã ã„ã¶æ—©ããªã‚Šã¾ã—ãŸã‚ˆã€ã¨ã„ã†ã”報告ã§ã™ã€‚

ã“ã‚“ãªã‚³ãƒ¼ãƒ‰ã§ãƒ¢ã‚¶ã‚¤ã‚¯å‡¦ç†ã«350~360msãらã„ã‹ã‹ã£ã¦ã¾ã—ãŸ

Android開発ã§ã®ãƒ‘フォーマンスTips(1) | Techfirm Android Lab
を見直ã—ã¦ã€ãƒ«ãƒ¼ãƒ—å‰ã«getterãªã©ã§å‚ç…§ã™ã‚‹å€¤ã¯ãƒ­ãƒ¼ã‚«ãƒ«å¤‰æ•°ã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã—ã¦ã¿ã‚‹ã¨ã€

310~320msã«ãªã‚Šã¾ã—ãŸã€‚
å°‘ã—ã§ã‚‚æ—©ããªã‚‹ã¨ã€ãƒ†ãƒ³ã‚·ãƒ§ãƒ³ãŒä¸ŠãŒã‚‹ã€‚

ã§ã‚‚ã“ã®ã‚³ãƒ¼ãƒ‰ã¯ã¾ã ã¾ã æ—©ããªã‚Œã‚‹ã¯ãšã ã€‚

今ã¯ãƒ«ãƒ¼ãƒ—ã®ä¸­ã§bitmap.getPixelã—ã¦setPixelã—ã¦1ピクセルå˜ä½ã§èª­ã¿æ›¸ãã—ã¦ã‚‹ã®ã§ã“れをガãƒãƒƒã¨ä¸€ç™ºã§é…列ã«å–り出ã—ã¦ã€ãƒ«ãƒ¼ãƒ—内ã§ã¯é…列をæ“作ã—ã¦ã€ãƒ«ãƒ¼ãƒ—後ã«setPixelsã§é…列をセットã™ã‚‹ã‚ˆã†ã«å¤‰æ›´ã—ã¦ã¿ã‚‹ã€‚

ã“れã ã¨ã€90~110msã¾ã§æ—©ããªã£ãŸã€‚

bitmap.getPixes()ã«å¼•æ•°ã¯é †ç•ªã«
1.色ã®é…列。int[]ã“ã“ã«ãƒ”クセルデータãŒå…¥ã£ã¦ãã‚‹
2.offset。inté…列ã®ã©ã“ã‹ã‚‰æ›¸ãã“ã‚€ã‹ã€‚
3.謎
4.ビットマップã®ãƒ”クセルを読ã¿å§‹ã‚ã‚‹X座標
5.ビットマップã®ãƒ”クセルを読ã¿å§‹ã‚ã‚‹Y座標
6.ビットマップã®å¹…
7.ビットマップã®é«˜ã•

ã¨ã„ã†ã“ã¨ãªã®ã§ã€getPixelsã®å‰ã«new int[width * height]ã—ã¦ã„る。
Androidã§ã¯1ピクセルã®ã‚«ãƒ©ãƒ¼æƒ…å ±ã¯intã§è¡¨ã‚ã™ã®ã§ã€ãれを横×縦分ã®é…列ã§å—ã‘å–ã£ã¦ã„る。

setPixelsã¯getPixelsã®é€†ã€‚
第一引数ã®inté…列をbitmap上ã®ã©ã“ã«æ›¸ãã‹ã‚’指定ã™ã‚‹ã€‚

copyPixelsToBufferã‚„ copyPixelsFromBuffer ã®æ–¹ãŒæ—©ã„ã‹ã‚‚ã—れãªã„ãŒã¾ã è©¦ã—ã¦ã„ãªã„。
ãã£ã¨Big iguchiãŒã‚„ã£ã¦ãれるã«é•ã„ãªã„。


Androidã§ãƒ¢ã‚¶ã‚¤ã‚¯ç”»åƒã‚’作ã£ã¦ã¿ã‚‹

No Comments »

モザイク
今日ã¯Androidã§ãƒ¢ã‚¶ã‚¤ã‚¯ç”»åƒã‚’作ã£ã¦ã¿ã¾ã™ã€‚
モザイク画åƒã‚’作るãŸã‚ã«ã¯

  • Androidã§ç”»åƒã®ãƒ”クセルデータをã„ã˜ã‚‹æ–¹æ³•
  • ç”»åƒã®ãƒ¢ã‚¶ã‚¤ã‚¯åŠ å·¥ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ 

ã“ã®ï¼’ã¤ãŒåˆ†ã‹ã‚Œã°ã§ããã†ã§ã™ã€‚

Read the rest of this entry »