圖片上的文字是沒法讀取的,以為這涉及到圖像處理。非常非常復(fù)雜!因?yàn)槿绻惴且x取圖片上的文字,不是幾行代碼可以搞定的,首相從matlaB開始學(xué),了解什么是圖像處理。然后再開發(fā)相應(yīng)的jar包。當(dāng)然,你也可以使用相關(guān)的軟件工具,比如識(shí)圖軟件,通過讀取軟件的反饋也算是讀取了圖片上的文字
在渝水等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè),渝水網(wǎng)站建設(shè)費(fèi)用合理。
import ja.io.*;
//獲取文件夾內(nèi)容
public class getthing
{
public static void main(String[] args) throws Exception
{
System.out.println(welstr);
listFile(new File("e:\\aa")); //想要搜索的路徑
}
public static void listFile(File file) throws Exception
{
if(file.isFile())
{
//輸出的是完整的文件夾內(nèi)文件的路徑
System.out.println("File :"+file.getAbsolutePath());
//01.jpg就是你要找的圖片
if (file.getAbsolutePath().endsWith("01.jpg"))
System.out.println("有搜索的圖片");
}
else
{
System.out.println("Dir :"+file.getAbsolutePath());
File[] files =file.listFiles();
for(int i=0;ifiles.length;i++)
{
listFile(files[i]);
System.out.println("回車");
}
}
}
}
1 首先確定你要搜索的目錄
2 要搜索的關(guān)鍵字 如“花”
3 只搜索圖片類型 .jpg .gif .png .bmp之類的
4 在文本框里獲得搜索的關(guān)鍵字
5 取得要搜索目錄下的所有圖片類型的名字
6 用關(guān)鍵字和取得的文件名一一進(jìn)行對(duì)比
7 若有關(guān)鍵字 記錄該圖片的名字
8 若都沒關(guān)鍵字 表示無該名字的圖片
9 空白區(qū)域你可以用一個(gè)窗體來表示
10 把搜索到的圖片都顯示在這個(gè)窗體。
// 讀取模板圖片內(nèi)容
BufferedImage image = ImageIO.read(new FileInputStream("c:\\test.jpg"));
Graphics2D g = image.createGraphics();// 得到圖形上下文
g.setColor(Color.BLACK); // 設(shè)置畫筆顏色
// 設(shè)置字體
g.setFont(new Font("宋體", Font.LAYOUT_LEFT_TO_RIGHT, 15));// 寫入簽名
// 下面這一句中的43,image.getHeight()-10可以改成你要的坐標(biāo)。
g.drawString("這是新加入的文字", 43, image.getHeight() - 10);
g.dispose();
FileOutputStream out = new FileOutputStream("c:\\test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
希望我的回答能幫助你 謝謝 呵呵 答案補(bǔ)充 肯定了 在一張紙上寫字 肯定會(huì)自動(dòng)換行的 否則寫外面?邏輯都通不過去~ 答案補(bǔ)充 把你的意思說出了 是不是隨便的寫字然后就提交 就把字寫在了圖片上還是?多少字 有沒有約束? 答案補(bǔ)充 g.drawString("這是新加入的文字", 43, image.getHeight() - 10);
在這個(gè)做處理 你規(guī)定了字體的大小 那么獲取字符的長度*大小 一次判斷不要大于寬度 否則image.getHeight() - 10++ 你試試 應(yīng)該可以的 我這里沒有Eclipse 答案補(bǔ)充 public class mains {
/**
* @param args
*/
private static int fontsize = 15;
static String jj(String str)
{
String sContent = str;
sContent=sContent.replaceAll(" "," ");
sContent=sContent.replaceAll("br/","/");
sContent=sContent.replaceAll("br","/");
return sContent;
} 答案補(bǔ)充 static void hh(String str)
{
BufferedImage image;
try {
image = ImageIO.read(new FileInputStream("E:\\dian zi za zhi/789.jpg"));
Graphics2D g = image.createGraphics();// 得到圖形上下文
g.setColor(Color.BLACK); // 設(shè)置畫筆顏色
// 設(shè)置字體
g.setFont(new Font("宋體", Font.LAYOUT_LEFT_TO_RIGHT, fontsize));// 寫入簽名
// 下面這一句中的43,image.getHeight()-10可以改成你要的坐標(biāo)。
String text = jj(str); 答案補(bǔ)充 String [] text1 = text.split("/");
int h = image.getHeight();
int w = image.getWidth();
for(int i=0;itext1.length;i++)
{
g.drawString(text1[i],0,fontsize+i*fontsize);
}
g.dispose();
FileOutputStream out = new FileOutputStream("E:\\dian zi za zhi/789.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close(); 答案補(bǔ)充 public static void main(String[] args) {
// TODO Auto-generated method stub
hh("sdakljsdhwwbr/asdasdbr/a");
}
}
試試 可以換行 答案補(bǔ)充 關(guān)于 圖片的尺寸以及字體是否超出 你自己試著解決下 不要過于依賴問
摘要圖像識(shí)別是目前很熱門的研究領(lǐng)域,涉及的知識(shí)很廣,包括信息論、模式識(shí)別、模糊數(shù)學(xué)、圖像編碼、內(nèi)容分類等等。本文僅對(duì)使用Java實(shí)現(xiàn)了一個(gè)簡單的圖像文本二值處理,關(guān)于識(shí)別并未實(shí)現(xiàn)。
步驟
建立文本字符模板二值矩陣
對(duì)測(cè)試字符進(jìn)行二值矩陣化處理
代碼
/*
* @(#)StdModelRepository.java
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package cn.edu.ynu.sei.recognition.util;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;/** * Hold character charImgs as standard model repository.
* @author 88250
* @version 1.0.0.0, Mar 20, 2008
*/
public class StdModelRepository {
/** * hold character images
*/ List charImgs = new ArrayList();
/** * default width of a character
*/ static int width = 16 /** * default height of a character
*/ static int height = 28 /** * standard character model matrix
*/ public int[][][] stdCharMatrix = new int[27][width][height];
/** * Default constructor.
*/ public StdModelRepository() {
BufferedImage lowercase = null try {
lowercase = ImageIO.read(new File("lowercase.png"));
} catch (IOException ex) {
Logger.getLogger(StdModelRepository.class.getName()).
log(Level.SEVERE, null, ex);
}
for (int i = 0 i 26 i++) {
charImgs.add(lowercase.getSubimage(i * width,
0,
width,
height));
}
for (int i = 0 i charImgs.size(); i++) {
Image image = charImgs.get(i);
int[] pixels = ImageUtils.getPixels(image,
image.getWidth(null),
image.getHeight(null));
stdCharMatrix[i] = ImageUtils.getSymbolMatrix(pixels, 0).clone();
ImageUtils.displayMatrix(stdCharMatrix[i]);
}
}
}
/*
* @(#)ImageUtils.java
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package cn.edu.ynu.sei.recognition.util;import java.awt.Image;import java.awt.image.PixelGrabber;import java.util.logging.Level;import java.util.logging.Logger;/** * Mainipulation of image data.
* @author 88250
* @version 1.0.0.3, Mar 20, 2008
*/
public class ImageUtils {
/** * Return all of the pixel values of sepecified codeimage .* @param image the sepecified image
* @param width width of the image
* @param height height of the image
* @return */ public static int[] getPixels(Image image, int width, int height) {
int[] pixels = new int[width * height];
try {
new PixelGrabber(image, 0, 0, width, height, pixels, 0, width).grabPixels();
} catch (InterruptedException ex) {
Logger.getLogger(ImageUtils.class.getName()).
log(Level.SEVERE, null, ex);
}
return pixels;
}
資源來自: