java中根据RGB获取Color 给一个例子
时间: 2023-06-05 20:08:55 浏览: 177
好的,以下是一个示例代码:
```java
int red = 255;
int green = 150;
int blue = 50;
Color color = new Color(red, green, blue);
// 或者可以使用以下方式获取一个指定RGB值的Color对象
int rgb = (red << 16) | (green << 8) | blue;
Color color = new Color(rgb);
```
希望能解决您的问题。
相关问题
java中Color类的使用
Java中的Color类是用来表示颜色的类,它包含了RGB(Red,Green,Blue)三种颜色的值以及透明度的值。以下是一些Color类的使用示例:
1. 创建一个Color对象:
```java
Color red = new Color(255, 0, 0); // 创建一个红色的Color对象
Color green = new Color(0, 255, 0); // 创建一个绿色的Color对象
Color blue = new Color(0, 0, 255); // 创建一个蓝色的Color对象
```
2. 获取Color对象的RGB值:
```java
Color red = new Color(255, 0, 0); // 创建一个红色的Color对象
int redValue = red.getRed(); // 获取红色的值,返回 255
int greenValue = red.getGreen(); // 获取绿色的值,返回 0
int blueValue = red.getBlue(); // 获取蓝色的值,返回 0
```
3. 修改Color对象的RGB值:
```java
Color red = new Color(255, 0, 0); // 创建一个红色的Color对象
red = red.brighter(); // 使红色变亮一些
int redValue = red.getRed(); // 获取红色的值,返回 255
int greenValue = red.getGreen(); // 获取绿色的值,返回 51
int blueValue = red.getBlue(); // 获取蓝色的值,返回 51
```
4. 使用Color对象绘制图形:
```java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ColorExample extends JPanel {
public void paint(Graphics g) {
super.paint(g);
setBackground(Color.WHITE); // 设置背景颜色为白色
g.setColor(Color.RED); // 设置画笔颜色为红色
g.fillRect(10, 10, 100, 100); // 绘制一个红色的矩形
}
public static void main(String[] args) {
JFrame frame = new JFrame("Color Example");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ColorExample());
frame.setSize(250, 200);
frame.setVisible(true);
}
}
```
这个例子创建了一个窗口并在窗口中绘制了一个红色的矩形。注意,使用Color对象绘制图形时要先设置画笔颜色。
openGL ES 在android中通过MediaCodec RGB转换MP4例子
以下是一个基于OpenGL ES和MediaCodec的RGB转换MP4的示例代码。这个示例代码是基于Android 4.3及以上版本的。
首先,需要在AndroidManifest.xml文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
```
然后,在Java代码中使用以下代码初始化Encoder:
```java
MediaCodec encoder;
MediaFormat format = MediaFormat.createVideoFormat("video/avc", width, height);
format.setInteger(MediaFormat.KEY_BIT_RATE, bitRate);
format.setInteger(MediaFormat.KEY_FRAME_RATE, frameRate);
format.setInteger(MediaFormat.KEY_COLOR_FORMAT, MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface);
format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, iFrameInterval);
encoder = MediaCodec.createEncoderByType("video/avc");
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
Surface inputSurface = encoder.createInputSurface();
encoder.start();
```
在OpenGL ES的渲染循环中,使用以下代码将当前帧渲染到输入Surface上:
```java
eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 绘制当前帧
...
// 将当前帧输出到输入Surface上
eglSwapBuffers(eglDisplay, eglSurface);
drawFrameCount++;
while (true) {
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
int outputBufferIndex = encoder.dequeueOutputBuffer(bufferInfo, 0);
if (outputBufferIndex == MediaCodec.INFO_TRY_AGAIN_LATER) {
break;
} else if (outputBufferIndex == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
MediaFormat newFormat = encoder.getOutputFormat();
// 将输出格式保存下来
...
} else if (outputBufferIndex < 0) {
// 忽略
} else {
ByteBuffer outputBuffer = encoder.getOutputBuffer(outputBufferIndex);
MediaFormat bufferFormat = encoder.getOutputFormat();
// 将输出Buffer写入MP4文件
...
encoder.releaseOutputBuffer(outputBufferIndex, false);
if ((bufferInfo.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
// 编码结束
...
}
}
}
```
最后,需要在应用程序退出时释放资源:
```java
encoder.stop();
encoder.release();
```
请注意,这只是一个示例代码,需要根据实际需求进行修改和调整。