مدیر کل انجمن hitexroid 105 ارسال شده در مرداد 96 مدیر کل انجمن گزارش Share ارسال شده در مرداد 96 سلام توی برنامه هایی مثل Music گوشی های Sony اگه دقت کرده باشید باتوجه به عکسی که روی کاور آهنگ وجود داره بک گراند هم خودش رو از نظر رنگی با عکس کاور تطابق میده برای مثال توی عکسی از رنگ قهوه ای بیشتر استفاده شده ، پس برنامه به شما رنگ قهوه ای رو برمیگردونه. Sub Globals Private JO As JavaObject End Sub Sub Activity_Create(FirstTime As Boolean) JO.InitializeContext JO.RunMethod("setBitmap",Array(LoadBitmap(File.DirAssets,"1.jpg"))) JO.RunMethod("getColor",Null) End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Public Sub RGB_GetColor(Color As Int) Activity.Color = Color End Sub #If JAVA import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Handler; private Bitmap bitmap; public void setBitmap(Bitmap bitmap) { this.bitmap = bitmap; } public void setBitmap(Drawable drawable) { setBitmap(((BitmapDrawable) drawable).getBitmap()); } private int readColor() { long red = 0; long green = 0; long blue = 0; long count = 0; for (int y = 0; y < bitmap.getHeight(); y++) { for (int x = 0; x < bitmap.getWidth(); x++) { int c = bitmap.getPixel(x, y); count++; red += Color.red(c); green += Color.green(c); blue += Color.blue(c); } } return Color.rgb((int) (red / count), (int) (green / count), (int) (blue / count)); } public void getColor() { if (bitmap == null) { throw new NullPointerException("Bitmap is null. Please set bitmap by setBitmap() method"); } else { getProminentColor(); } } private void getProminentColor() { Handler mainHandler = new Handler(); Runnable myRunnable = new Runnable() { @Override public void run() { int col = readColor(); processBA.raiseEvent(null,"rgb_getcolor",col); } }; mainHandler.post(myRunnable); } #End If نقل قول لینک به ارسال به اشتراک گذاری در سایت های دیگر More sharing options...
مدیر کل انجمن hitexroid 105 ارسال شده در 31 تیر مالک مدیر کل انجمن گزارش Share ارسال شده در 31 تیر این کد زیر سریعتره Dim JO As JavaObject JO.InitializeContext View.Color = JO.RunMethod("calculateAverageColor",Array(btmp,1)) /* pixelSpacing tells how many pixels to skip each pixel. If pixelSpacing > 1: the average color is an estimate, but higher values mean better performance If pixelSpacing == 1: the average color will be the real average If pixelSpacing < 1: the method will most likely crash (don't use values below 1) */ public int calculateAverageColor(android.graphics.Bitmap bitmap, int pixelSpacing) { int R = 0; int G = 0; int B = 0; int height = bitmap.getHeight(); int width = bitmap.getWidth(); int n = 0; int[] pixels = new int[width * height]; bitmap.getPixels(pixels, 0, width, 0, 0, width, height); for (int i = 0; i < pixels.length; i += pixelSpacing) { int color = pixels[i]; R += Color.red(color); G += Color.green(color); B += Color.blue(color); n++; } return Color.rgb(R / n, G / n, B / n); } نقل قول لینک به ارسال به اشتراک گذاری در سایت های دیگر More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.