簡體   English   中英

Java中的漸變顏色查找

[英]Gradient color lookup in Java

我有一個0-1值列表。 我想通過使用將這些浮點值轉換為RGB值的漸變將該列表轉換為圖像。 Java中是否有任何工具可以為您提供此功能?

0應該被映射0
1應該被映射255

請記住,您需要其中3種來制作顏色

因此將浮點數乘以255,然后將其強制轉換為int。

也許GradientPaint可以做您想要的。 尚不清楚如何將浮點值列表轉換為漸變。 通常,漸變包含兩種顏色以及一些在這些顏色之間進行插值的機制。 GradientPaint實現線性漸變。

假設您有一個由64 000個三元組組成的數組,對應於RGB值,如下所示:

    final Random rand = new Random();
    final float[] f = new float[320*200*3];
    for (int i = 0; i < f.length; i++) {
        f[i] = rand.nextFloat(); // <-- generates a float between [0...1.0[
    }

並說您有一個BufferedImage,其大小為320x200(64 000像素),類型為INT_ARGB(每個值8位+ Alpha級別8位):

    final BufferedImage bi = new BufferedImage( 320, 200, BufferedImage.TYPE_INT_ARGB );

然后,您可以將float數組轉換為RGB值,並執行以下操作來填充圖像:

    for (int x = 0; x < 320; x++) {
        for (int y = 0; y < 200; y++) {
            final int r = (int) (f[x+y*200*3] * 255.0);
            final int g = (int) (f[x+y*200*3+1] * 255.0);
            final int b = (int) (f[x+y*200*3+2] * 255.0);
            bi.setRGB( x, y, 0xFF000000 | (r << 16) | (g << 8) | b );
        }
    }

請注意,如果您顯示此圖像,它將顯示為灰色,但是如果放大它,您會看到它實際上是由完全隨機的彩色像素組成的。 只是隨機數生成器是如此之好,以至於在屏幕上看起來都是灰色的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM