精华内容
下载资源
问答
  • java读取图片

    2013-04-24 12:31:45
    送给不懂c++,而要完成数字图像处理课程设计的同学。
  • 用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息用于java读取图片信息
  • java 读取图片信息

    2015-03-16 09:58:54
    java 读取图片信息,metadata-extractor-2.7.2.jar依赖于xmpcore-5.1.2.jar
  • 主要介绍了Java读取图片EXIF信息的方法,较为详细的分析了图片EXIF信息的概念、功能及java读取EXIF信息的实现技巧,需要的朋友可以参考下
  • Java读取图片分辨率

    千次阅读 2015-11-01 21:11:38
    Java读取图片分辨率

    代码依赖于其他工具包,下载请移步:http://download.csdn.net/detail/zhaoguoshuai91/9231957

    废话不多说,直接上代码

    public class ImageInfoUtil {
    	
    	private static Logger log = Logger.getLogger(ImageInfoUtil.class);
    	
    	/**
    	 * 获取单张图片的全量Info信息
    	 * @param imagePath  图片的物理路径
    	 */
    	public static  Map<String,String>  getImageInfo(String imagePath){
    		Map<String,String> imageInfo=new HashMap<String,String>();
    		try {
    			File jpegFile = new File(imagePath);
    			if(jpegFile.isFile()){//图片必须是一个文件
    				Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);  
    		         for(Directory exif:metadata.getDirectories()){
    		        	 Iterator tags= exif.getTags().iterator();
    		        	 while (tags.hasNext()) {  
    		                 Tag tag = (Tag)tags.next(); 
    		                 log.debug("tag:<br/>");
    		                 log.debug(tag);
    		                 String key=tag.getTagName().trim().replace(" ","");
    		                 String val=tag.getDescription().trim().replace(" ","");
    		                 imageInfo.put(key, val);
    		             }  
    		         }
    			}
    		} catch (Exception e) {
                e.printStackTrace();
    		}
    		return imageInfo;
    	}
    	/**
    	 * 获取单张图片指定Info类型的信息
    	 * @param imagePath 图片的物理路径
    	 * @param direct    Info类型[eg:InfoSubIFDDirectory or PhotoshopDirectory]
    	 */
    	public static  Map<String,String>  getImageInfo(String imagePath,Class<? extends Directory> direct){
    		Map<String,String> imageInfo=new HashMap<String,String>();
    	    try {
    	    	File jpegFile = new File(imagePath);  
    	    	if(jpegFile.isFile()){
    	    		Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);  
    		        Directory exif=metadata.getFirstDirectoryOfType(direct);
    		        if(exif!=null){
    		        	Iterator tags= exif.getTags().iterator();
    			   	    while (tags.hasNext()) {  
    			            Tag tag = (Tag)tags.next(); 
    			            log.debug("tag:<br/>");
    		                log.debug(tag);
    			            String key=tag.getTagName().trim().replace(" ","");
    			            String val=tag.getDescription().trim().replace(" ","");
    			            imageInfo.put(key, val);
    			        }  
    		        }
    	    	}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return imageInfo;
    	}
    	/**
    	 * 校验图片分辨率
    	 * @param imagePath    图片的物理路径
    	 * @param imageHeight  图片的高
    	 * @param imageWidth   图片的宽
    	 */
    	public static boolean checkImageResolution(String imagePath,String imageHeight,String imageWidth){
    		Map<String,String> imageInfo=getImageInfo(imagePath);
    		String currentImageHeight=imageInfo.get("ImageHeight").replace("pixels","");
    		String currentImageWidth=imageInfo.get("ImageWidth").replace("pixels","");
    		log.debug("tag:currentImageWidth:"+currentImageWidth+","+"currentImageHeight:"+currentImageHeight);
    		if(imageHeight.equals(currentImageHeight)&&imageWidth.equals(currentImageWidth)){
    			return true;
    		}
    		return false;
    	}
    }
    




    展开全文
  • 本篇文章主要介绍了Java 读取图片的mimeType的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java读取图片分辨率依赖,如果你想实现在后台自动识别图片的分辨率,那么就果断下载吧!
  • java读取图片exif信息

    2016-10-18 19:11:39
    点击打开链接 java读取图片exif信息
    展开全文
  • java读取图片文件流

    2014-09-29 14:46:39
    java读取本地图片文件获取流!java读取本地图片文件获取流!
  • 主要介绍了java读取图片并转化为二进制字符串的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • java读取图片文字

    千次阅读 2019-12-19 11:05:29
    java自动读取图片文字信息代码片工具类 java中识别文字使用的软件是tesseractocr(使用的版本是3.02,3以后的版本才支持中文),这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java...

    java自动读取图片文字信息


    java中识别文字使用的软件是tesseractocr(使用的版本是3.02,3以后的版本才支持中文),这个软件需要安装在本地电脑中,安装的过程中全部都按照默认进行安装(以便于Java直接调用),
    想要完整的程序私信我或者直接下载https://download.csdn.net/download/qq_35571894/12040072 ,打包下载完成后导入即可运行测试。
    另外想要读取PDF文件信息的请点击链接:https://download.csdn.net/download/qq_35571894/12038360 spireOCR 可以识别PDF上文字信息

    代码片

    代码片.

    public class ImageIOHelper {
        //设置语言
        private Locale locale = Locale.CHINESE;
        //自定义语言构造的方法
        public ImageIOHelper(Locale locale){
            this.locale=locale;
        }
        //默认构造器Locale.CHINESE
        public ImageIOHelper(){
        }
        /**
         * 创建临时图片文件防止损坏初始文件
         * @param imageFile
         * @param imageFormat like png,jps .etc
         * @return TempFile of Image
         */
        public File createImage(File imageFile, String imageFormat) throws IOException {
    
            //读取图片文件
            Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat);
            ImageReader reader = readers.next();
            //获取文件流
            ImageInputStream iis = ImageIO.createImageInputStream(imageFile);
            reader.setInput(iis);
            IIOMetadata streamMetadata = reader.getStreamMetadata();
    
            //设置writeParam
            TIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.CHINESE);
            tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED); //设置可否压缩
            //获得tiffWriter和设置output
            Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");
            ImageWriter writer = writers.next();
    
    
            BufferedImage bi = reader.read(0);
            IIOImage image = new IIOImage(bi,null,reader.getImageMetadata(0));
            File tempFile = tempImageFile(imageFile);
            ImageOutputStream ios = ImageIO.createImageOutputStream(tempFile);
    
            writer.setOutput(ios);
            writer.write(streamMetadata, image, tiffWriteParam);
    
            ios.close();
            iis.close();
            writer.dispose();
            reader.dispose();
    
            return tempFile;
        }
        /**
         * 给tempfile添加后缀
         * @param imageFile
         * @throws IOException
         */
        private File tempImageFile(File imageFile) throws IOException {
            String path = imageFile.getPath();
            StringBuffer strB = new StringBuffer(path);
            strB.insert(path.lastIndexOf('.'),"_text_recognize_temp");
            String s=strB.toString().replaceFirst("(?<=//.)(//w+)$", "tif");
            Runtime.getRuntime().exec("attrib "+"\""+s+"\""+" +H"); //设置文件隐藏
            return new File(strB.toString());
        }
    
    

    工具类

    package utils;
    
    import controller.ImageIOHelper;
    import org.jdesktop.swingx.util.OS;
    
    import java.io.*;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Locale;
    
    public class OCRUtil {
    
        private final String LANG_OPTION = "-l";  //英文字母小写l,并非阿拉伯数字1
        private final String EOL = System.getProperty("line.separator");
        private String tessPath = "D://Tesseract//Tsseract-OCR//Tesseract-OCR";//ocr的安装路径
    
        public OCRUtil(String tessPath,String transFileName){
            this.tessPath=tessPath;
        }
    
        //OCRUtil的构造方法,默认路径是"C://Program Files (x86)//Tesseract-OCR"
        public OCRUtil(){     }
    
        public String getTessPath() {
            return tessPath;
        }
        public void setTessPath(String tessPath) {
            this.tessPath = tessPath;
        }
        public String getLANG_OPTION() {
            return LANG_OPTION;
        }
        public String getEOL() {
            return EOL;
        }
    
        /**
         * @param imageFile 需要识别的文件
         * @param imageFormat 文件的格式
         * @return
         * @throws Exception
         */
        public String recognizeText(File imageFile,String imageFormat)throws Exception{
            File tempImage = new ImageIOHelper().createImage(imageFile,imageFormat);
            return ocrImages(tempImage, imageFile);
        }
    
        //可以自定义语言
        public String recognizeText(File imageFile, String imageFormat, Locale locale)throws Exception{
            File tempImage = new ImageIOHelper(locale).createImage(imageFile,imageFormat);
            return ocrImages(tempImage, imageFile);
        }
    
        /**
         * @param tempImage 临时文件
         * @param imageFile 需要识别的文件
         * @return 识别后的内容
         * @throws IOException
         * @throws InterruptedException
         */
        private String ocrImages(File tempImage,File imageFile) throws IOException, InterruptedException{
    
            //设置输出文件的保存的文件目录,以及文件名
            File outputFile = new File(imageFile.getParentFile(),"test");
            StringBuffer strB = new StringBuffer();
    
            //设置命令行内容
            List<String> cmd = new ArrayList<String>();
            if(OS.isWindowsXP()){
                cmd.add(tessPath+"//tesseract");
            }else if(OS.isLinux()){
                cmd.add("tesseract");
            }else{
                cmd.add(tessPath+"//tesseract");
            }
            cmd.add("");
            cmd.add(outputFile.getName());
            cmd.add(LANG_OPTION);
            cmd.add("chi_sim");//中文包
            cmd.add("equ");//常用数学公式包
            cmd.add("eng");//英语包
    
    
            //创建操作系统进程
            ProcessBuilder pb = new ProcessBuilder();
            pb.directory(imageFile.getParentFile());//设置此进程生成器的工作目录
            cmd.set(1, tempImage.getName());
            pb.command(cmd);//设置要执行的cmd命令
            pb.redirectErrorStream(true);//设置后续子进程生成的错误输出都将与标准输出合并
    
            long startTime = System.currentTimeMillis();
            System.out.println("开始时间:" + startTime);
    
            Process process = pb.start();//开始执行,并返回进程实例
            //最终执行命令为:tesseract 1.png test -l chi_sim+equ+eng
    
            int w = process.waitFor();
            tempImage.delete();//删除临时正在工作文件
            if(w==0){ // 0代表正常退出
                BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(outputFile.getAbsolutePath()+".txt"),"UTF-8"));
                String str;
                while((str = in.readLine())!=null){
                    strB.append(str).append(EOL);
                }
                in.close();
    
                long endTime = System.currentTimeMillis();
                System.out.println("结束时间:" + endTime);
                System.out.println("耗时:" + (endTime - startTime) + "毫秒");
    
            }else{
                String msg;
                switch(w){
                    case 1:
                        msg = "Errors accessing files.There may be spaces in your image's filename.";
                        break;
                    case 29:
                        msg = "Cannot recongnize the image or its selected region.";
                        break;
                    case 31:
                        msg = "Unsupported image format.";
                        break;
                    default:
                        msg = "Errors occurred.";
                }
                tempImage.delete();
                throw new RuntimeException(msg);
            }
            new File(outputFile.getAbsolutePath()+".txt");//.delete();
            return strB.toString().replaceAll("\\s*", "");
        }
    }
    
    
    展开全文
  • Java读取图像metadata信息

    千次阅读 2017-07-29 15:33:13
    最近在做一个项目的时候需要要用的解析图像的拍摄时间,这些信息用图像查看工具基本都可以看到,之前有研究过MP3的文件格式,通过一些Tag来标记文件的一些信息,受此启发,猜测图像应该也有类似的机制。本章介绍两种...

    最近在做一个项目的时候需要要用的解析图像的拍摄时间,这些信息用图像查看工具基本都可以看到,之前有研究过MP3的文件格式,通过一些Tag来标记文件的一些信息,受此启发,猜测图像应该也有类似的机制。所以网上搜索了一下图像文件的存储格式,然后就查到了Exif规范,相机在拍照后按照Exif的相关规范,可以将拍摄时间、GPS等信息写入文件,我们按照规范格式将相关信息独取出来就好了,我上传了一份《Exif2.2》的官方文档,有兴趣可以下载查看。
    知道了存储的格式,开始动手写代码解析?如果我完全自己动手按照规范解析,还是挺麻烦的,而且我们不需要重复造轮子,网上已经有了相关的库可以实现该功能。

    Imaging (previously called Sanselan)

    之前写过一篇《Imaging (previously called Sanselan)读取图像信息》,简单的介绍了一下这个库以及用法,下面我们就烂看一下,如何读取metadata信息。

    package test;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import org.apache.sanselan.ImageReadException;
    import org.apache.sanselan.Sanselan;
    import org.apache.sanselan.common.IImageMetadata;
    import org.apache.sanselan.formats.jpeg.JpegImageMetadata;
    import org.apache.sanselan.formats.tiff.TiffImageMetadata;
    import org.junit.Test;
    
    
    public class ImageMetaDataTest
    {
       @Test
       public void test() throws Exception
       {
    
          File imageFile = new File("C:\\Users\\admin\\Desktop\\mmexport1501076450193.jpg");
          sanselan(imageFile);
       }
    
       public void sanselan(File file) throws ImageReadException, IOException
       {
          IImageMetadata metadata = Sanselan.getMetadata(file);
          if (metadata == null)
          {
             return;
          }
          System.err.println("metadata items:");
          ArrayList items = metadata.getItems();
          for (Object item : items)
          {
             System.err.println(item);
          }
          System.err.println("GPS info:");
          if (metadata instanceof JpegImageMetadata)
          {
             JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
    
             TiffImageMetadata exifMetadata = jpegMetadata.getExif();
             if (null != exifMetadata)
             {
                TiffImageMetadata.GPSInfo gpsInfo = exifMetadata.getGPS();
                if (null != gpsInfo)
                {
                   double longitude = gpsInfo.getLongitudeAsDegreesEast();
                   double latitude = gpsInfo.getLatitudeAsDegreesNorth();
    
                   System.err.println("GPS Description: " + gpsInfo);
                   System.err.println("GPS Longitude (Degrees East): " + longitude);
                   System.err.println("GPS Latitude (Degrees North): " + latitude);
                }
             }
          }
       }
    
    }

    在这段示例代码中,我们首先读取图像的MetaData信息和GPS数据,如果我们只需要读取拍摄时间的话,我们可以这样写:

    public String getDateBySanselan(File file) throws ImageReadException, IOException
    {
       IImageMetadata metadata = Sanselan.getMetadata(file);
       if (metadata instanceof JpegImageMetadata)
       {
          JpegImageMetadata jpegMetadata = (JpegImageMetadata) metadata;
          TiffField field = jpegMetadata.findEXIFValue(TiffConstants.EXIF_TAG_DATE_TIME_ORIGINAL);
          if (field != null)
          {
             return field.getValueDescription().replace("'", "");
          }
       }
       return null;
    }

    metadata-extractor

    项目地址为:https://github.com/drewnoakes/metadata-extractor

    package test;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    
    import org.junit.Test;
    
    import com.drew.imaging.ImageMetadataReader;
    import com.drew.imaging.ImageProcessingException;
    import com.drew.metadata.Directory;
    import com.drew.metadata.Metadata;
    import com.drew.metadata.Tag;
    
    public class ImageMetaDataTest
    {
       @Test
       public void test() throws Exception
       {
          File imageFile = new File("C:\\Users\\admin\\Desktop\\mmexport1501076450193.jpg");
          metadataExtractor(imageFile);
       }
    
       public void metadataExtractor(File file) throws ImageProcessingException, IOException
       {
          Metadata metadata = ImageMetadataReader.readMetadata(file);
          for (Directory directory : metadata.getDirectories())
          {
             System.err.println(directory.getClass());
             for (Tag tag : directory.getTags())
             {
                System.err.println(tag);
             }
          }
       }
    }

    同样的,上面一段代码也是打印图像的metadata信息,我个人感觉使用该包比Sanselan要方便一些,我们想要获得拍摄时间,只需要这样写:

    public Date getDateByMetadataExtractor(File file) throws ImageProcessingException, IOException
    {
       Metadata metadata = ImageMetadataReader.readMetadata(file);
       ExifSubIFDDirectory directory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);
       return directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);
    }
    展开全文
  • Java读取图片文件

    万次阅读 2017-07-18 20:54:17
    需求:读取图片输入流,获取图片并存储在桌面上 代码如下: import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; import java.awt.*; import java.awt.image.BufferedImage; import ...
  • java读取图片成rgb二维数组

    千次阅读 2017-10-03 11:31:30
    全栈工程师开发手册 (作者:栾鹏) ...java读取图片成rgb二维数组测试代码public static void main(String[] args) { Color[][] allcolor=img2color("11.jpg"); for (Color[] onerow : allcolor) { for
  • Java读取图片Metadata元数据Exif

    千次阅读 2016-03-22 20:14:04
    2016年3月Java读取图片Metadata元数据Exif(maven下载包配置)   转自:2016年3月Java读取图片Metadata元数据Exif package image;  import java.io.File;  import java.io.IOException;  import java....
  • java读取图像的rpg以及灰度值,可以对rgb进行修改后输出新图像/** *java读取图像的rpg以及灰度值,可以对rgb进行修改后输出新图像 */ File file = new File(filename); BufferedImage BI = null; try{ BI = ...
  • 1.用java读取图片并显示的代码 response.setContentType("image/png"); ServletOutputStream out = response.getOutputStream(); String path = request.getRealPath(""); ...
  • java 读取图片显示红色

    千次阅读 2017-08-10 18:01:12
    原图片正常,图片转成二进制字符串放入word文档中部分图片就显示不正常了,查询资料后发现,是因为使用java自带的工具类 IOImage.read() 方法的问题,经过查阅得知ImageIO.read()方法读取图片时可能存在不正确处理...
  • java读取图片并显示

    万次阅读 2018-04-12 23:14:23
    一般我们会遇到一个网页会根据不同的状态来动态加载图片展示,比如首页轮播图,展示最新三张。 1、先去数据库查找最新发布的三张照片的ID。...3、后台通过ID获取图片路径,将该图片使用流读取到缓存区中,然后...
  • java读取图片以及转成base64串 try { byte[] data = null; ByteArrayOutputStream output = new ByteArrayOutputStream(); FileInputStream ips = null; ips = new FileIn...
  • [Java] Java读取图片中的地理坐标

    千次阅读 2017-08-04 11:42:44
    java 图片 GPS 地理坐标 照片
  • 2、获取图片大小(单位:B) long size = file.getSize(); 3、获取图片像素(单位:px) BufferedImage image = ImageIO.read(file.getInputStream()); int width = image.getWidth(); //宽 int height = image.getHeight...
  • JAVA读取图片时间内容

    千次阅读 2018-11-22 11:01:00
    import java.io.File; import java.io.IOException; import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.imaging.jpeg.JpegProcessingException; import com.drew.metadata.Directory; import ...
  • Java读取图片的三种方式

    千次阅读 2012-12-24 17:27:43
    原文:用java读取图片的三种方式  说明:把图片显示在label上;常用api的作用;使用JFrame等时 关闭窗口--退出调试的代码。 完整代码,已编译执行成功 import javax.imageio.*;//for ImageIO.read import ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 198,605
精华内容 79,442
关键字:

java读取图片

java 订阅