找回密码
 加入
搜索
查看: 13453|回复: 20

[图形处理] AU3能将图片转二进制写到数据库吗[已解决]

 火.. [复制链接]
发表于 2011-7-18 10:20:12 | 显示全部楼层 |阅读模式
本帖最后由 qq82015930 于 2011-7-24 21:08 编辑

AU3能将图片转二进制写到数据库吗

能的话给个转换和读取的列子,谢谢!

唉!转换到图片始终是空白
发表于 2011-7-18 11:23:38 | 显示全部楼层
同求.....哈哈!期待高手解答
发表于 2011-7-18 11:27:56 | 显示全部楼层
目前所知,au3可以把十六进制转化为图像输出,反过来操作不知道如何整
 楼主| 发表于 2011-7-18 14:37:05 | 显示全部楼层
AU3 不会不行哟。C++  VB 都行拉。相信AU3能做到的。只是还没高手发现.
发表于 2011-7-18 15:21:52 | 显示全部楼层
纠结啊~~~~~!期待期待!!!!!!!!!!
发表于 2011-7-18 16:45:35 | 显示全部楼层
本帖最后由 tubaba 于 2011-7-18 16:51 编辑

肯定是可以的,只要数据库字段大小足够储存这些信息,sql不知道text类型最多可以放多少个字符,可能是6万5千左右,我试过将粘贴到richedit的文件用_GUICtrlRichEdit_StreamToVar生成数据流再放入数据库,没有问题,可以重新提取到richedit内
发表于 2011-7-18 21:30:58 | 显示全部楼层
可以ㄚ@@  我已經可以做到了
发表于 2011-7-18 21:42:16 | 显示全部楼层
本帖最后由 kk_lee69 于 2011-7-18 22:03 编辑

重點是  資料庫版本 跟語法而已.................以下用 SQL 2000 為例子  這個是比較複雜的....聽說SQL 2000以上的資料庫 有更方便的方法

第一種  新增的方式......P.S 資料庫裡面的資料表為二進制格式的資料表欄位
$hHandle = FileOpen("c:\123.jpg",16)
$fRead = Binary(FileRead($hHandle))
$conn.Execute("insert into comPicture (picID,picType,picName,Picture,Memo,Refcount,Step,JustSize) values ('123',1,'123.jpg',"&$fRead&",'自動轉入程式新增',0,-1,1)");插入一條紀錄
注意上面 $fRead  這個變數的地方..................用這樣的方式就可以用下面的語法  直接寫入.......二進位的資料欄

可是..........如果  原本的那個位置是屬於已經有存過照片的.....是屬於更新的.....就不能用上面的方法.....要用下面的語法才能更新
$hHandle = FileOpen($jpgin&$RS.Fields (0).value&".jpg",16)
$fRead = Binary(FileRead($hHandle))
$conn.Execute("DECLARE @ptrval binary(16) SELECT @ptrval=TEXTPTR(Picture)  FROM comPicture  WHERE PicID='123'  UPDATETEXT comPicture.Picture @ptrval 0 NULL "&$fRead)
這段程式  是我寫給正航系統 T357 ERP 用的  有實測過........

PS 上面的範例 可能必須貼到 編輯器 去看會比較清楚....因為裡面我帶了很多 從資料表比對的資料 $RS.Fields (0).value  這樣的東西 都是我從其他資料表比對出來要更新的值.......有關圖片的 主要是 $fRead 這個變數

P.S2 我修正一下好了....這樣會比較清楚點吧
发表于 2011-7-19 01:53:59 | 显示全部楼层
本帖最后由 happytc 于 2011-7-19 02:14 编辑

难道不是简单地:

#include <SQLite.au3>

Local $hImage, $fData, $hFileName, $sData, $hImageQuery, $hImageRow

_SQLite_Startup (@ScriptDir & "\sqlite3.dll")
_SQLite_Open(@ScriptDir & "\image.db")
_SQLite_Exec(-1,"CREATE TABLE IF NOT EXISTS Test (data blob);")

$hImage = FileOpen(@ScriptDir & "\LiveCapture.ico", 16)
$fData = FileRead($hImage)
$sData = _SQLite_Encode($fData)
MsgBox(0, 0, $fData)
_SQLite_Exec(-1,"INSERT INTO Test VALUES (" & $sData & ");")
_SQLite_Query(-1,"SELECT data FROM Test WHERE rowid=1;", $hImageQuery)
_SQLite_FetchData($hImageQuery, $hImageRow, 1)
MsgBox(0, 0, Hex($hImageRow[0]))
_SQLite_QueryFinalize ($hImageQuery)
$hFileName = FileOpen(@ScriptDir & "\imageDB.gif", 2)
FileWrite($hFileName, $hImageRow[0])
_SQLite_Close()
_SQLite_Shutdown()
发表于 2012-2-27 11:41:25 | 显示全部楼层
回复 8# kk_lee69


    前辈,你只说明写入数据库如何写,那读出来呢?从数据库中取出,并转为图片文件如何操作??
发表于 2012-2-28 01:38:21 | 显示全部楼层
回复 10# z761003

讀出來應該不困難吧.....因為這樣的圖片 通常是以 二進制存在資料庫裡面.....

用SQL 直接讀取.....然後再AU3 另存檔案  附檔名是JPG 這樣就可以看到呀
发表于 2012-4-13 08:42:03 | 显示全部楼层
还是不太明白,如果读出能来点原码研究下就好了
发表于 2012-4-13 09:32:55 | 显示全部楼层
折腾了半天,读出的图片无法显示,请赐教
发表于 2012-4-13 09:49:53 | 显示全部楼层
发表于 2012-4-13 10:03:39 | 显示全部楼层
回复 14# yeqing880


谢谢,研究下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-3 13:00 , Processed in 0.078853 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表