大概流程:
員工經(jīng)過長期磨合與沉淀,具備了協(xié)作精神,得以通過團(tuán)隊(duì)的力量開發(fā)出優(yōu)質(zhì)的產(chǎn)品。成都創(chuàng)新互聯(lián)堅(jiān)持“專注、創(chuàng)新、易用”的產(chǎn)品理念,因?yàn)椤皩W⑺詫I(yè)、創(chuàng)新互聯(lián)網(wǎng)站所以易用所以簡(jiǎn)單”。公司專注于為企業(yè)提供做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、電商網(wǎng)站開發(fā),小程序開發(fā),軟件按需制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。
1.上傳插件的選擇:此篇博文選擇的是jQuery的zyupload文件上傳插件;
2.上傳請(qǐng)求發(fā)起后,java代碼的處理:你是要將上傳的圖片只保存在服務(wù)器還是只保存在數(shù)據(jù)庫還是說兩者都采取。上傳到服務(wù)器很簡(jiǎn)單,保存到數(shù)據(jù)庫也很簡(jiǎn)單,但是此處需要考慮業(yè)務(wù),圖片保存在數(shù)據(jù)庫時(shí)采用哪種保存方式(本博文業(yè)務(wù)來自于項(xiàng)目,因?yàn)閳D片數(shù)量巨多,故在數(shù)據(jù)庫是通過保存圖片的路徑實(shí)現(xiàn)的,并非二進(jìn)制流);
3.圖片保存在數(shù)據(jù)庫后,在前段頁面的回顯功能。
檢查sql語句的語法 ,
運(yùn)行環(huán)境:
mysql-connector-java-3.1.12-bin.jar
sqljdbc4.jar(與此jar無關(guān))
運(yùn)行結(jié)果:
java.sql.SQLException: Incorrect arguments to mysql_stmt_execute
如果使用高版本的mysql jar包,則沒有問題,比如
mysql-connector-java-5.1.39-bin.jar
import?javax.imageio.ImageIO;
import?java.awt.image.BufferedImage;
import?java.io.ByteArrayInputStream;
import?java.io.ByteArrayOutputStream;
import?java.io.File;
import?java.io.IOException;
public?class?ImageUtils?{
public?static?void?main(String[]?args)?{
String?str?=?img2Binary("C:\\Users\\hny\\Desktop\\favicon.jpg");
System.out.println(str);
binary2Img("C:\\Users\\hny\\Desktop\\favicon2.jpg",?str);
}
/**
*?圖片轉(zhuǎn)二進(jìn)制字符串
*
*?@param?path?圖片路徑
*?@return
*/
public?static?String?img2Binary(String?path)?{
File?file?=?new?File(path);
if?(!file.exists())?{
return?null;
}
try?{
BufferedImage?bi?=?ImageIO.read(file);
ByteArrayOutputStream?baos?=?new?ByteArrayOutputStream();
String?suffix?=?getSuffix(path);
ImageIO.write(bi,?suffix,?baos);
byte[]?bytes?=?baos.toByteArray();
return?new?sun.misc.BASE64Encoder().encodeBuffer(bytes).trim();
}?catch?(IOException?e)?{
e.printStackTrace();
}
return?null;
}
/**
*?字符串轉(zhuǎn)圖片文件
*
*?@param?path??????圖片路徑
*?@param?imgBinary?圖片字符串
*/
public?static?void?binary2Img(String?path,?String?imgBinary)?{
try?{
File?file?=?new?File(path);
byte[]?bytes1?=?new?sun.misc.BASE64Decoder().decodeBuffer(imgBinary);
ByteArrayInputStream?bais?=?new?ByteArrayInputStream(bytes1);
BufferedImage?bi1?=?ImageIO.read(bais);
String?suffix?=?getSuffix(path);
ImageIO.write(bi1,?suffix,?file);
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/**
*?獲取圖片后綴名
*
*?@param?path
*?@return
*/
private?static?String?getSuffix(String?path)?{
int?index?=?path.contains(".")???path.lastIndexOf(".")?:?-1;
if?(index??-1)?{
return?path.substring(index?+?1);
}
return?null;
}
}
你有幾個(gè)地方錯(cuò)了
for?(int?y?=?0;?y??image.getHeight();?y?+=?8)?{
for?(int?x?=?0;?x??image.getHeight();?x?+=?4)?{
final?int?pixel?=?image.getRGB(x,?y);
final?int?r?=?(pixel??0xff0000)??16,?g?=?(pixel??0xff00)??8,?b?=?pixel??0xff;
final?float?gray?=?0.299f?*?r?+?0.578f?*?g?+?0.114f?*?b;
final?int?index?=?Math.round(gray?*?(base.length()?+?1)?/?255);
System.out.println(index?=?base.length()???"?"?:?String.valueOf(base.charAt(index)));
}
System.out.println();
}
改為:
for?(int?y?=?0;?y??image.getHeight();?y?+=?8)?{
for?(int?x?=?0;?x??image.getWidth();?x?+=?4)?{
final?int?pixel?=?image.getRGB(x,?y);
final?int?r?=?(pixel??0xff0000)??16,?g?=?(pixel??0xff00)??8,?b?=?pixel??0xff;
final?float?gray?=?0.299f?*?r?+?0.578f?*?g?+?0.114f?*?b;
final?int?index?=?Math.round(gray?*?(base.length()?+?1)?/?255);
System.out.print(index?=?base.length()???"?"?:?String.valueOf(base.charAt(index)));
}
System.out.println();
}
注意第二行使用image.getWidth(),第七行的println寫成print,否則每個(gè)字符都會(huì)換行。
#首先在D盤寫一個(gè)文件"temp.html",如下內(nèi)容 圖片轉(zhuǎn)文本 body { font-family: 宋體; line-height: 0.8em; letter-spacing: 0px; font-size: 8px; } ${content} #在D盤放一個(gè)圖片(放小一點(diǎn)的)"a.jpg"
#首先在D盤寫一個(gè)文件"temp.html",如下內(nèi)容
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
html
head
title圖片轉(zhuǎn)文本/title
meta http-equiv="content-type" content="text/html; charset=gbk"
style type="text/css"
body {
font-family: 宋體; line-height: 0.8em; letter-spacing: 0px; font-size: 8px;
}
/style
/head
body
${content}
/body
/html
#在D盤放一個(gè)圖片(放小一點(diǎn)的)"a.jpg"
#運(yùn)行如下JAVA代碼:
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.imageio.ImageIO;
public class Test {
/** 此處設(shè)置灰度字符,此處只用十個(gè)字符,可以設(shè)置更多 */
private static char[] cs = new char[] { '.', ',', '*', '+', '=', '', '$', '@', '#', ' ' };
public static void main(String[] args) throws IOException {
// 讀取圖片
BufferedImage bfedimage = ImageIO.read(new File("D:\\a.jpg"));
// 圖片轉(zhuǎn)字符串后的數(shù)組
char[][] css = new char[bfedimage.getWidth()][bfedimage.getHeight()];
for (int x = 0; x bfedimage.getWidth(); x++) {
for (int y = 0; y bfedimage.getHeight(); y++) {
int rgb = bfedimage.getRGB(x, y);
Color c = new Color(rgb);
// 得到灰度值
int cc = (c.getRed() + c.getGreen() + c.getBlue()) / 3;
css[x][y] = cs[(int) ((cc * 10 - 1) / 255)];
}
}
// 取得模板HTML
String temp = readFile(new File("D:\\temp.html"),"gbk");
StringBuffer sb = new StringBuffer();
// 開始拼接內(nèi)容
for (int y = 0; y css[0].length; y++) {
for (int x = 0; x css.length; x++) {
sb.append(css[x][y]);
}
sb.append("\r\n");
}
System.out.println(sb.toString());
// 生成文件
String content = toHTML(sb.toString());
String filecontent = replaceStrAllNotBack(temp, "${content}", content);
writeFile(new File("D:\\content.html"), filecontent, "gbk");
}
public static String toHTML(String s) {
s = s.replaceAll("", "");
s = s.replaceAll(" ", "?");
s = s.replaceAll("", "");
s = s.replaceAll("", "");
s = s.replaceAll("\"", """);
s = s.replaceAll("\\\r\\\n", "br/");
s = s.replaceAll("\\\r", "br/");
s = s.replaceAll("\\\n", "br/");
return s;
}
public static String replaceStrAllNotBack(String str, String strSrc, String strDes) {
StringBuffer sb = new StringBuffer(str);
int index = 0;
while ((index = sb.indexOf(strSrc, index)) != -1) {
sb.replace(index, index + strSrc.length(), strDes);
index += strDes.length();
}
return sb.toString();
}
/**
* 讀文件(使用默認(rèn)編碼)
*
* @param file
* @return 文件內(nèi)容
* @throws IOException
*/
public static String readFile(File file, String charset) throws IOException {
InputStreamReader fr = new InputStreamReader(new FileInputStream(file), charset);
StringBuffer sb = new StringBuffer();
char[] bs = new char[1024];
int i = 0;
while ((i = fr.read(bs)) != -1) {
sb.append(bs, 0, i);
}
fr.close();
return sb.toString();
}
/**
* 寫文件
*
* @param file
* @param string
* 字符串
* @param encoding
* 編碼
* @return 文件大小
* @throws IOException
*/
public static int writeFile(File file, String string, String encoding) throws IOException {
FileOutputStream fos = new FileOutputStream(file);
try {
byte[] bs = string.getBytes(encoding);
fos.write(bs);
return bs.length;
} finally {
fos.close();
}
}
}
#打開"D:\content.html"文件看效果吧。
有什么問題可以聯(lián)系我。
文章標(biāo)題:java圖片轉(zhuǎn)字符代碼 java圖片轉(zhuǎn)文字代碼
文章鏈接:http://jinyejixie.com/article34/dodhipe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、全網(wǎng)營銷推廣、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站改版、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)