本文目录一览:
- 解析下这个生成图片的Java代码
- 怎样用JAVA编写一个小应用程序,输出一张图片或自己的照片
- java如何生成图片
- 我想把一个黑白的线条的手绘图片转换成一个矩阵存储,黑用0,白用1,请问用java如何实现
- [JAVA setRGB使图片变白](#JAVA setRGB使图片变白)
解析下这个生成图片的Java代码
- 调用"images"文件夹里的文件放在ImageIcon里显示。
- 在Windows下面显示正常。Java在图形处理时调用了本地的图形处理库。在利用Java作图形处理(比如:图片缩放,图片签名,生成报表)时,如果运行在Windows上不会出问题。如果将程序移植到Linux/Unix上的时候有可能出现图形不能显示的错误。
- 提示信息:"Can't connect to X11 window server"这是由于Linux的图形处理需要一个XServer服务器。关于Linux的图形处理模式参考Tomcat的修改如下:打开
%Tomcat_home%/bin/catalina.sh
文件,在文件的86%处,启动Tomcat的脚本中加上:-Djava.awt.headless=true
。参考:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" -Dcatalina.base="$CATALINA_BASE" -Dcatalina.home="$CATALINA_HOME" -Djava.io.tmpdir="$CATALINA_TMPDIR" -Djava.awt.headless=true org.apache.catalina.startup.Bootstrap "$@" start > "$CATALINA_BASE"/logs/catalina.out 2>&1
if [ ! -z "$CATALINA_PID" ]; then
echo $! > "$CATALINA_PID"
fi
保存后,重新启动就可以处理图形了。
怎样用JAVA编写一个小应用程序,输出一张图片或自己的照片
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class text {
JFrame jf;
JLabel jl;
JPanel jp1;
public static void main(String[] args) {
text t = new text();
t.go();
}
void go() {
final ImageIcon image1 = new ImageIcon("1.gif");
jf = new JFrame();
jl = new JLabel(image1);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(300, 300);
jf.setLocation(400, 300);
jp1 = new JPanel();
jp1.add(jl);
jf.getContentPane().add(jp1);
jf.setVisible(true);
}
}
把你的照片找一张GIF格式的照片,名字改成1.gif
,放在你的项目根目录下。
java如何生成图片
java.awt.image.BufferedImage
javax.imageio.ImageIO
// 获得Graphics
Graphics graphics = BufferedImage.getGraphics();
// 将BufferedImage 写到文件流中
ImageIO.write(BufferedImage, "JPEG", OutputStream);
我想把一个黑白的线条的手绘图片转换成一个矩阵存储,黑用0,白用1,请问用java如何实现
import java.io.File;
import java.io.FileInputStream;
public class Test {
/**
* 将图片转成0/1矩阵
* @param imagePath
* @return
* @throws IOException
*/
public int[][] imgMtr(String imagePath) throws Exception {
java.awt.image.BufferedImage image = javax.imageio.ImageIO.read(new FileInputStream(new File(imagePath)));
int w = image.getWidth();
int h = image.getHeight();
int[][] mtr = new int[h][w]; // 存储矩阵
for (int i = 0; i < h; i++) {
for (int j = 0; j < w; j++) {
int rgb = image.getRGB(j, i); // aRGB
// 依次检查R、G、B是否超过阈值
// 超过视为白色,否则黑色
int r = (rgb & 0x00ff0000) >> 16;
int g = (rgb & 0x0000ff00) >> 8;
int b = (rgb & 0x000000ff);
int a = 0xff / 2; // 阈值,可根据需要设定
if (r > a && g > a && b > a) {
mtr[i][j] = 1;
} else {
mtr[i][j] = 0;
}
}
}
return mtr;
}
public static void main(String[] args) throws Exception {
Test test = new Test();
int[][] result = test.imgMtr("F:\\hex.jpg");
for (int[] row : result) {
for (int col : row) {
System.out.print(col);
}
System.out.print("\n");
}
}
}
JAVA setRGB使图片变白
因为它们的ColorModel不同。判断一张图是灰度图还是彩色图最好的办法就是比对一下某一个像素的RGB是否都为同一个值。因为灰色的这三个值都是相同的而彩色不同。
int color = img.getRGB(x, y); // 获取某个点的颜色值
int red = (color >> 16) & 255; // 获取这个点的红色值
int green = (color >> 8) & 255; // 获取这个点的绿色值
int blue = color & 255; // 获取这个点的蓝色值
if (red == green && green == blue) {
System.out.println("这是一张灰度图");
}