我们强烈建议你在下面的帖子中提及此内容。
- Java中的图像处理设置1(读和写)
- Java中的图像处理设置2(获取并设置像素)
在一个棕褐色image图像的Alpha分量将与原始图像相同(因为alpha分量表示透明度), 但RGB将更改, 它将通过以下公式计算。
newRed = 0.393*R + 0.769*G + 0.189*BnewGreen = 0.349*R + 0.686*G + 0.168*BnewBlue = 0.272*R + 0.534*G + 0.131*BIf any of these output values is greater than 255, simply set it to 255.These specific values are the values for sepia tone that are recommended by Microsoft.
算法:
- 获取像素的RGB值。
- 使用以上公式计算newRed, newGree, newBlue(取整数值)
- 根据以下条件设置像素的新RGB值:
- 如果newRed> 255, 则R = 255, 否则R = newRed
- 如果newGreen> 255, 则G = 255, 否则G = newGreen
- 如果newBlue> 255, 则B = 255, 否则B = newBlue
- 将R, G和B的值替换为我们为像素计算的新值。
- 对图像的每个像素重复步骤1至步骤4。
//Java program to demonstrate colored to sepia conversion
import java.io.File;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Sepia
{
public static void main(String args[]) throws IOException
{
BufferedImage img = null ;
File f = null ;
//read image
try
{
f = new File( "G:\\Inp.jpg" );
img = ImageIO.read(f);
}
catch (IOException e)
{
System.out.println(e);
}//get width and height of the image
int width = img.getWidth();
int height = img.getHeight();
//convert to sepia
for ( int y = 0 ;
y <
height;
y++)
{
for ( int x = 0 ;
x <
width;
x++)
{
int p = img.getRGB(x, y);
int a = (p>
>
24 )&
0xff ;
int R = (p>
>
16 )&
0xff ;
int G = (p>
>
8 )&
0xff ;
int B = p&
0xff ;
//calculate newRed, newGreen, newBlue
int newRed = ( int )( 0.393 *R + 0.769 *G + 0.189 *B);
int newGreen = ( int )( 0.349 *R + 0.686 *G + 0.168 *B);
int newBlue = ( int )( 0.272 *R + 0.534 *G + 0.131 *B);
//check condition
if (newRed>
255 )
R = 255 ;
else
R = newRed;
if (newGreen>
255 )
G = 255 ;
else
G = newGreen;
if (newBlue>
255 )
B = 255 ;
else
B = newBlue;
//set new RGB value
p = (a<
<
24 ) | (R<
<
16 ) | (G<
<
8 ) | B;
img.setRGB(x, y, p);
}
}//write image
try
{
f = new File( "G:\\Out.jpg" );
ImageIO.write(img, "jpg" , f);
}
catch (IOException e)
{
System.out.println(e);
}
}
}
注意注意:此代码无法在在线IDE上运行, 因为它需要磁盘上的映像。
输出如下:
Inp.jpgOut.jpg
【Java中的图像处理S6(将彩色图像转换为棕褐色图像)】如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。
推荐阅读
- Java中的图像处理S3(彩色图像到灰度图像的转换)
- 使用OpenCV进行图像修复-项目示例
- 使用K均值聚类的图像压缩
- 使用霍夫曼编码进行图像压缩原理和实现细节
- 使用CNN的图像分类器原理和实现
- Python在Kivy中设置背景模板示例
- htop命令总结
- docker-compose部署nginx#yyds干货盘点#
- Linux第11周