رفتن به مطلب
جهت پشتیبانی کتابخانه ها ابتدا در انجمن ثبت نام کنید و اقدام به ارسال تیکت فرمایید(انجمن هایتکس روید) ×
هایتکس روید | HitexRoid
جستجو در
  • تنظیمات بیشتر ...
جستجو به صورت ...
جستجو در ...

گرفتن میانگین رنگ از عکس


hitexroid

Recommended Posts

  • مدیر کل انجمن

سلام توی برنامه هایی مثل 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

 

لینک به ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 years later...
  • مدیر کل انجمن

این کد زیر سریعتره

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);
}

 

لینک به ارسال
به اشتراک گذاری در سایت های دیگر

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  حداکثر استفاده از ۷۵ شکلک مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • جدید...