㈠ java 如何获取图片的像素值
try{
File _file = new File("C:/Documents and Settings/mayuanfei/My Documents/女友照片.jpg"); //读入文件
Image src = javax.imageio.ImageIO.read(_file); //构造Image对象
int wideth=src.getWidth(null); //得到源图宽
int height=src.getHeight(null); //得到源图长
System.out.println(wideth+","+height);
}catch(Exception e){
e.printStackTrace();
}
㈡ java 中读取图片宽度和高度总是为-1,怎么办
图片的宽度和高度一般来说如果你不设定的话,它显示的是原始大小,一般来说需要自己设定的,如果疑问的话将你的例子写上来一些,看看。
至于读取动画GIF图片,跟普通图片一样,只需要一个"URL"路径就可以了。
㈢ java 如何将多张JPG图片合成视频文件,比如:avi格式 或 mpg格式.
之前有做过图片合成视频的功能,大概代码就是这样,你可以看一下
/**
* 图片合成视频
* @param mp4SavePath 视频保存路径
* @param imageDir 图片地址
* @param rate 这个可以理解成视频每秒播放图片的数量
*/
public static boolean jpgToMp4(String mp4SavePath, String imageDir, double rate) {
FFmpegFrameRecorder recorder = null;
boolean flag = true;
try {
File[] files = FileUtils.fileSort(imageDir);
int [] widthArray = new int[files.length];
int [] heightArray = new int[files.length];
/**
* 获取合成视频图片的最大宽高,避免图片比例不一致最终合成效果差
*/
for (int i = 0; i < files.length; i++) {
BufferedImage bufferedImage = ImageIO.read(files[i]);
widthArray[i] = bufferedImage.getWidth();
heightArray[i] = bufferedImage.getHeight();
}
/**
* 这个方法主要是防止图片比例达不到视频合成比例的要求,如果达不到下面条件视频则会无法播放
* 图片宽:必须要被32整除
* 图片高:必须要被2整除
*/
int [] maxWH = getImgMaxWH(widthArray,heightArray);
recorder = new FFmpegFrameRecorder(mp4SavePath,maxWH[0],maxWH[1]);
recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
/**
* 视频质量:目前测试出来的是25-30最清晰,视频质量范围好像是0-40,具体可以自己慢慢测
*/
recorder.setVideoQuality(25);
recorder.setFormat("mp4");
recorder.setFrameRate(rate > 0 ? rate : 1);
recorder.setPixelFormat(0);
recorder.start();
OpenCVFrameConverter.ToIplImage conveter = new OpenCVFrameConverter.ToIplImage();
/**
* 合成视频
*/
for(int i = 0; i < files.length; i++ ){
opencv_core.IplImage image = cvLoadImage(files[i].getPath());
recorder.record(conveter.convert(image));
opencv_core.cvReleaseImage(image);
}
logger.info("合成成功");
} catch(Exception e) {
e.printStackTrace();
flag = false;
logger.error("合成失败");
} finally {
try {
if (recorder != null){
recorder.stop();
recorder.release();
}
} catch (FrameRecorder.Exception e) {
e.printStackTrace();
}
}
return flag;
}
㈣ java濡备綍鍒ゆ柇锲剧墖鏂囦欢镄勫藉害鍜岄珮搴︼纻
鍒ゆ柇锲剧墖鏂囦欢镄勫藉害鍜岄珮搴︼细
InputStream is = new FileInputStream(filename);//阃氲繃鏂囦欢钖岖О璇诲彇鎴朓nputStream is =new ByteArrayInputStream(byte[] a);//阃氲繃鏂囦欢镄勫瓧鑺傛暟缁勮诲彇銆
BufferedImage buff = ImageIO.read(is);
buff.getWidth();銆//寰楀埌锲剧墖镄勫藉害
buff.getHeight();�0�2 //寰楀埌锲剧墖镄勯珮搴
is.close(); //鍏抽棴Stream
Java鏄涓闂ㄩ溃钖戝硅薄缂栫▼璇瑷锛屼笉浠呭惛鏀朵简C++璇瑷镄勫悇绉崭紭镣癸纴杩樻憭寮冧简C++閲岄毦浠ョ悊瑙g殑澶氱户镓裤佹寚阍堢瓑姒傚康锛屽洜姝Java璇瑷鍏锋湁锷熻兘寮哄ぇ鍜岀亩鍗曟槗鐢ㄤ袱涓鐗瑰緛銆
Java鍏锋湁绠鍗曟с侀溃钖戝硅薄銆佸垎甯冨纺銆佸仴澹镐с佸畨鍏ㄦс佸钩鍙扮嫭绔嬩笌鍙绉绘嶆с佸氱嚎绋嬨佸姩镐佹х瓑鐗圭偣銆侸ava鍙浠ョ紪鍐欐岄溃搴旂敤绋嫔簭銆乄eb搴旂敤绋嫔簭銆佸垎甯冨纺绯荤粺鍜屽祵鍏ュ纺绯荤粺搴旂敤绋嫔簭绛夈
Java鐪嬭捣𨱒ヨ捐″缑寰埚儚C++锛屼絾鏄涓轰简浣胯瑷灏忓拰瀹规槗镡熸倝锛岃捐¤呬滑鎶奀++璇瑷涓璁稿氩彲鐢ㄧ殑鐗瑰緛铡绘帀浜嗭纴杩欎簺鐗瑰緛鏄涓鑸绋嫔簭锻桦緢灏戜娇鐢ㄧ殑銆备緥濡傦纴Java涓嶆敮鎸乬o to璇鍙ワ纴浠d箣浠ユ彁渚沚reak鍜宑ontinue璇鍙ヤ互鍙婂纾甯稿勭悊銆侸ava杩桦墧闄や简C++镄勬搷浣灭﹁繃杞斤纸overload锛夊拰澶氱户镓跨壒寰侊纴骞朵笖涓崭娇鐢ㄤ富鏂囦欢锛屽厤铡讳简棰勫勭悊绋嫔簭銆
㈤ Java:Image和BufferedImage的区别是什么
Image是一个抽象类,BufferedImage是Image的实现类。
Image和BufferedImage的主要作用就是将一副图片加载到内存中。
BufferedImage 子类描述具有可访问图像数据缓冲区的 Image。BufferedImage 由图像数据的 ColorModel 和 Raster 组成。Raster 的 SampleModel 中 band 的数量和类型必须与 ColorModel 所要求的数量和类型相匹配,以表示其颜色和 alpha 分量。所有 BufferedImage 对象的左上角坐标都为 (0, 0)。因此,用来构造 BufferedImage 的任何 Raster 都必须满足:minX=0 且 minY=0。
Java将一副图片加载到内存中的方法是:
String imgPath = "D://demo.bmp";
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
该方法BufferedImage 可以获得图片的详细信息,例如:获得图片的宽度:image.getWidth(null);图片只有加载内存中才能对图片进行进一步的处理。
㈥ 相册管理 java实现 功能是图片显示与图片放大缩小 急~~
上楼的我只想说你根本不懂java,这么简单的功能都不能实现,还是一门编程语言吗? 一、部分截图: ①打开 ②放大 ③翻转 ④缩小 二、源程序: import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;
public class PhotoFrame extends JFrame implements ActionListener{ Canvas photo;
JPanel p;
JButton open,bigger,smaller,rotate,exit;
JScrollPane sp;
JFileChooser fc;
int w = 150;
int h = 150;
Image image;
int rate = 10;//图片放缩率(单位:像素)
public PhotoFrame(){
init();
this.setTitle ("Java图片查看器");
this.setSize (600,500);
this.setLocationRelativeTo (this);//窗口居中
this.setVisible (true);
this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
}
public void init(){
photo = new Photo();
sp = new JScrollPane(photo);
p = new JPanel();
open = new JButton("open");
bigger = new JButton(" + ");
smaller = new JButton(" - ");
rotate = new JButton(" の ");
exit = new JButton("exit");
//设置前景色
open.setForeground (Color.BLUE);
bigger.setForeground (Color.GREEN);
smaller.setForeground (Color.GREEN);
rotate.setForeground (Color.GREEN);
exit.setForeground (Color.RED);
//设置提示文本
open.setToolTipText ("打开文件");
bigger.setToolTipText ("放大");
smaller.setToolTipText ("缩小");
rotate.setToolTipText ("翻转");
exit.setToolTipText ("退出程序");
//设置边框
p.setBorder (BorderFactory.createEtchedBorder ());
p.add (open);
p.add (bigger);
p.add (smaller);
p.add (rotate);
p.add (exit);
add(sp,BorderLayout.CENTER);
add(p,BorderLayout.SOUTH);
open.addActionListener (this);
bigger.addActionListener (this);
smaller.addActionListener (this);
rotate.addActionListener (this);
exit.addActionListener (this);
}
public static void main(String[] args){
new PhotoFrame();
} public void actionPerformed (ActionEvent e){
if(e.getSource ()==open){//打开
fc = new JFileChooser();
int returnval = fc.showOpenDialog(this);
if(returnval == JFileChooser.APPROVE_OPTION){
File f = fc.getSelectedFile ();
String fileName = f.getName ();
String filePath=fc.getSelectedFile().getAbsolutePath();
System.out.println(filePath);
this.setTitle (fileName+"-Java图片查看器");
//通过文件路径获得图片
image = new ImageIcon(filePath).getImage ();
//获取图片的宽和高
w = image.getWidth (this);
h = image.getHeight (this);
}
}else if(e.getSource ()==bigger){//放大
if(w>0) w+= rate;
else w-= rate;
if(h>0)h+= rate;
else h-= rate;
}else if(e.getSource ()==smaller){//缩小
if(w>0) w-= rate;
else w+= rate;
if(h>0) h-= rate;
else h+= rate;
}else if(e.getSource ()==rotate){//翻转
if(w>0&&h>0){
h*=-1;
}else if(w>0&&h<0){
w*=-1;
}else if(w<0&&h<0){
h*=-1;
}else if(w<0&&h>0){
w*=-1;
}
}else{//退出
System.exit(0);
}
photo.repaint ();//重新绘制
}
class Photo extends Canvas{
public void paint(Graphics g){
int width = this.getWidth();
int height = this.getHeight();
//设置图片左上角坐标
int x = (width-w)/2;
int y = (height-h)/2;
//绘制图片
g.drawImage(image, x, y, w, h,this);
}
}
}
三、补充:1、滚动面板功能没有具体实现2、放大缩小率应该按照图片宽高比来设置,最好用一个滚动条来放大缩小3、翻转功能需要改进 楼主自己试着完善下...
㈦ 给定一幅图像,用java读取每个像素的RGB三个颜色值
int rgbR;
int rgbG;
int rgbB;
int minx = 0;
int miny = 0;
try {
File file = new File("E:\\dd.png");
BufferedImage image = ImageIO.read(file);
int width = image.getWidth();//图片宽度
int height = image.getHeight();//图片高度
for (int i = minx; i < width; i++) {
for (int j = miny; j < height; j++) {
int pixel = image.getRGB(i, j); // 下面三行代码将一个数字转换为RGB数字
rgbR = (pixel & 0xff0000) >> 16;
rgbG = (pixel & 0xff00) >> 8;
rgbB = (pixel & 0xff);
System.out.println("i=" + i + ",j=" + j + ":(" + rgbR + "," + rgbG + "," + rgbB + ")");
}
}
System.out.println("图片宽度为:"+width+",高度为:"+height);
} catch (IOException e) {
System.out.println("读取文件出错");
e.printStackTrace();
}