数据库能存图片吗

数据库能存图片吗,第1张

问题一:数据库怎样可以将放到里面 首先肯定一点,数据库中是可以放数据的!但是这样的话,数据体积会很庞大,当然最好还是把放到文件夹中,数据只用来存放路径,不过最好是存放相对路径,应该以后可能设计到单独放在另一台服务器上,或换了文件夹。

问题二:SQL数据库中能存照片吗? 完全可以存放,但是在数据库中不能以select from a进行查询

但是在相对应得c#、Java中可以查询

是以二进制保存的。

数据库,只要是抽象出来的数据,都可以保存。

而已不能保存的,就是实体,像处啊、鞋子啊、男朋友啊都不姓

问题三:mysql数据库可以存吗? 可以。存的列需要设置成BLOB、MEDIUMBLOB或LONGBLOB等数据类型。

但是以前基本上不会把直接存在数据库里,因为数据库里的数据是为了用来快速分析、快速存取的,数据在mysql里既不能建立索引也不能和其他数据一起分析,存取速度和读写磁盘也没什么区别,每次备份、导入导出数据库时还增加了数据量,降低了效率。所以一般都是把存在系统里,然后把的存放路径放在数据库里。

问题四:如何存入数据库 第一种方式:保存路径至数据库中

第二种方式:数据插入相应表中,参数类型为byte[]

例如:

sql:insert into table(imageColumn) values (@image);

其中@image参数值为byte[]类型的变量

问题五:如何存放在oracle数据库 测试可行。这只是核心Class文件代码,你要是弄不出来,就再联系我,我再把整个项目给你。这是把真个放到数据库

package dao;

import javaioFileInputStream;

import javaioOutputStream;

import javasqlBlob;

import javasqlConnection;

import javasqlPreparedStatement;

import javasqlResultSet;

import javautilScanner;

import oraclesqlBLOB;

public class Insert {

Scanner sc =new Scanner(Systemin);

@SuppressWarnings(deprecation)

public int insertbinary(String pname,String src1){

Connection con = null;

String sql = insert into test values(,);

String sql1 =update test set image= where pname=;

int res = 0;

try {

con=BaseDAOgetConnection();

consetAutomit(false);

PreparedStatement pstm = conprepareStatement(sql);

pstmsetString(1, pname);

EMPTY_BLOB和EMPTY_CLOB返回一个空的LOB定位器,

可以用来初始化一个LOB变量,或在INSERT或UPDATE语句,

初始化LOB列或属性为空。 EMPTY表示LOB初始化,但不填充数据。

pstmsetBlob(2, oraclesqlBLOBempty_lob());

pstmexecuteUpdate();

pstmclose();

pstm = conprepareStatement(select from test where pname=);

pstmsetString(1, pname);

ResultSet rs = pstmexecuteQuery();

rsnext();

BLOB blob = (BLOB) rsgetBlob(2);

OutputStream os = blobgetBinaryOutputStream();

FileInputStream fi = new FileInputStream(src1);

byte[] buff = new byte[1024];

int len = firead(buff);

while (len != -1) {

oswrite(buff);

len = firead(buff);

}

pstm = conprepareStatement(sql1);

pstmsetBlob(1,>>

问题六:如何将储存在MySQL数据库里 通常对用户上传的需要保存到数据库中。解决方法一般有两种:一种是将保存的路径存储到数据库;另一种是将以二进制数据流的形式直接写入数据库字段中。以下为具体方法:

一、保存的上传路径到数据库:

string uppath=;用于保存上传路径

获取上传的文件名

string fileFullname = thisFileUpload1FileName;

获取上传的时间,以时间作为的名字可以防止重名

string dataName = DateTimeNowToString(yyyyMMddhhmmss);

获取的文件名(不含扩展名)

string fileName = fileFullnameSubstring(fileFullnameLastIndexOf(\\) + 1);

获取扩展名

string type = fileFullnameSubstring(fileFullnameLastIndexOf() + 1);

判断是否为要求的格式

if (type == bmp || type == jpg || type == jpeg || type == gif || type == JPG || type == JPEG || type == BMP || type == GIF)

{

将上传到指定路径的文件夹

thisFileUpload1SaveAs(ServerMapPath(~/upload) + \\ + dataName + + type);

将路径保存到变量,将该变量的值保存到数据库相应字段即可

uppath = ~/upload/ + dataName + + type;

}

二、将以二进制数据流直接保存到数据库:

引用如下命名空间:

using SystemDrawing;

using SystemIO;

using SystemDataSqlClient;

设计数据库时,表中相应的字段类型为iamge

保存:

路径

string strPath = thisFileUpload1PostedFileFileNameToString ();

读取

FileStream fs = new SystemIOFileStream(strPath, FileModeOpen, FileAccessRead);

BinaryReader br = new BinaryReader(fs);

byte[] photo = brReadBytes((int>>

问题七:如何在数据库中存储文件 解决方法一般有两种:

一种是将保存的路径存储到数据库;

另一种是将以二进制数据流的形式直接写入数据库字段中。

问题八:如何将存到数据库 通常对用户上传的需要保存到数据库中。解决方法一般有两种:一种是将保存的路径存储到数据库;另一种是将以二进制数据流的形式直接写入数据库字段中。以下为具体方法:

一、保存的上传路径到数据库:

string uppath=;用于保存上传路径

获取上传的文件名

string fileFullname = thisFileUpload1FileName;

获取上传的时间,以时间作为的名字可以防止重名

string dataName = DateTimeNowToString(yyyyMMddhhmmss);

获取的文件名(不含扩展名)

string fileName = fileFullnameSubstring(fileFullnameLastIndexOf(\\) + 1);

获取扩展名

string type = fileFullnameSubstring(fileFullnameLastIndexOf() + 1);

判断是否为要求的格式

if (type == bmp || type == jpg || type == jpeg || type == gif || type == JPG || type == JPEG || type == BMP || type == GIF)

{

将上传到指定路径的文件夹

thisFileUpload1SaveAs(ServerMapPath(~/upload) + \\ + dataName + + type);

将路径保存到变量,将该变量的值保存到数据库相应字段即可

uppath = ~/upload/ + dataName + + type;

}

二、将以二进制数据流直接保存到数据库:

引用如下命名空间:

using SystemDrawing;

using SystemIO;

using SystemDataSqlClient;

设计数据库时,表中相应的字段类型为iamge

保存:

路径

string strPath = thisFileUpload1PostedFileFileNameToString ();

读取

FileStream fs = new SystemIOFileStream(strPath, FileModeOpen, FileAccessRead);

BinaryReader br = new BinaryReader(fs);

byte[] photo = br>>

问题九:怎样数据库access保存jpg 只有两种方法

1存地址,放服务器的一个文件夹里

2存的数据,也就是二进制流

既然第一种你说不行 那只能第二种了。

我只说一下思路,代码网上找一下,多的很,也不麻烦1数据库字段类型为image(sqlserver的是image,不知道access的是不是)

2把文件序列化 放到一个byte[]数组里,然后存到数据库

显示的时候:

1单独在一个页面读出的内容到一个byte[]数组

2用response把这段二进制输出

3在要引用的地方,比如你的image控件,把引用的地址指向这个页面就行了

问题十:如何像数据库中保存? 一般图像是不保存在数据库的而是先将放在工程下的某个文件夹中,将所在的工程文件路径存在数据库中,当程序加载的时候,从数据库中读取的路径,然后根据路径在工程的文件夹中读取文件

以下部分内容来自 百度百科 ,还会有一部分是自己的见解,我写这篇文章的目的是既让大家可以了解百度上已有的知识,但是不用再去找百度,还有就是可以看到我关于这种格式的深层次的了解,看完这篇,包括我在内,会感觉到即使很小很小的一个知识点,深入以后都是非常深的,底层和深层次原理是我的最爱,这也是我写博客的初衷和目的。

GIF(Graphics Interchange Format) 的原义是“ 图像 互换格式”,是 CompuServe 公司在 1987年开发的 图像文件格式 。GIF文件的数据,是一种基于 LZW算法 的连续色调的无损 压缩格式 。其 压缩率 一般在 50% 左右,它不属于任何应用 程序 。GIF格式可以存多幅彩色图像,如果把存于一个文件中的多幅 图像数据 逐幅读出并显示到屏幕上,就可构成一种最简单的动画。

GIF图象是基于颜色列表的(存储的数据是该点的颜色对应于颜色列表的索引值),最多只支持8位(256色)。GIF文件内部分成许多存储块,用来存储多幅图象或者是决定图象表现行为的控制块,用以实现动画和交互式应用。GIF文件还通过LZW压缩算法压缩图象数据来减少图象尺寸。

GIF格式自1987年由 CompuServe 公司引入后,因其体积小、成像相对清晰,特别适合于初期慢速的 互联网 ,而大受欢迎。

在早期, GIF 所用的LZW压缩算法是Compuserv所开发的一种免费算法。然而令很多软件开发商感到意外的是,GIF文件所采用的压缩算法忽然成了 Unisys 公司的专利。

据Unisys公司称,他们已注册了 LZW算法 中的W部分。如果要开发生成(或显示)GIF文件的程序,则需向该公司支付版税。由此,人们开始寻求一种新技术,以减少开发成本。 PNG ( Portable Network Graphics ,便携网络图形)标准就在这个背景下应运而生了。它一方面满足了市场对更少的法规限制的需要,另一方面也带来了更少的技术上的限制,如颜色的数量等。

在2003年6月20日,LZW算法在美国的专利权已到期而失效。在欧洲、日本及加拿大的专利权亦已分别在2004年的6月18日、6月20日和7月7日到期失效。尽管如此,PNG文件格式凭着其技术上的优势,已然跻身于网络上第三广泛应用格式。与GIF相关的专利于2006年8月11日过期。

长久以来,iOS一直被吐槽不能用GIF。造成这一局面的主要原因是:

GIF分为静态GIF和动画GIF两种,扩展名为gif,是一种压缩 位图 格式,支持透明 背景图像 ,适用于多种 *** 作系统,“体型”很小,网上很多小动画都是GIF格式。其实GIF是将多幅图像保存为一个图像文件,从而形成动画,最常见的就是通过一帧帧的动画串联起来的搞笑gif图,所以归根到底GIF仍然是 文件格式 。

但GIF只能显示256色。和 jpg格式 一样,这是一种在网络上非常流行的图形文件格式。

GIF主要分为两个版本,即 GIF 89a 和 GIF 87a

此给出的语法用来说明形成gif 数据流 的块序列,用一些规则列表来表达。下面列出用于gif语法的符号定义。

gif语法的符号定义:<GIF 数据流 > ::= 头部 <;逻辑视屏> <;数据> 尾记录

gif 数据流 中的 数据块 可以分为三组:控制块、成象块和特殊用途块。

色表- gif格式利用色表来显示基于光栅的图像。色表分为全局色表和局部色表。全局色表对于那些没有设置局部色表的图像起作用。全局色表的作用域是整个 数据流 。局部色表对于紧接在其后的单张图像起作用。这两种色表都是可选的。

全局色表这东西是我们感兴趣的东西,它有点像png格式定义种的调色板,如果要修改gif的颜色,哈哈,修改这个全局色表就可以,如果有全局色表块,那么它一定从gif流的14个字节开始(头部6个 + 逻辑视频描述块7个)。

以下是各 数据块 的说明,如果注明为版本89a的话,则说明这个数据块不会在87a版的协议中出现。

Packed Fields 说明:

GIF文件内部是按块划分的,包括 控制块( Control Block ) 和 数据块(DataSub-blocks) 两种。控制块是控制数据块行为的,根据不同的控制块包含一些不同的控制参数;数据块只包含一些8-bit的字符流,由它前面的控制块来决定它的功能,每个数据块大小从0到255个字节,数据块的第一个字节指出这个数据块大小(字节数),计算数据块的大小时不包括这个字节,所以一个空的数据块有一个字节,那就是数据块的大小0x00。 下表是一个数据块的结构:

一个GIF文件的结构可分为文件头(File Header)、GIF数据流(GIF DataStream)和文件终结器(Trailer)三个部分。文件头包含GIF文件署名(Signature)和版本号(Version);GIF数据流由控制标识符、图象块(ImageBlock)和其他的一些扩展块组成;文件终结器只有一个值为0x3B的字符('';'')表示文件结束。下表显示了一个GIF文件的组成结构:

是用来标识GIF署名(Signature)和版本号(Version)的。

GIF署名用来确认一个文件是否是GIF格式的文件,这一部分由三个字符组成:"GIF";文件版本号也是由三个字节组成,可以为"87a"或"89a"。具体如下图所示。

它包含了很多的部分。

(1) 逻辑屏幕标识符 (Logical Screen Descriptor) :这一部分由7个字节组成,定义了GIF图象的大小 (Logical Screen Width &Height) 、颜色深度 (Color Bits) 、背景色 (Blackground ColorIndex) 以及有无全局颜色列表 (Global Color Table) 和颜色列表的索引数 (IndexCount) ,具体描述见下图。

也可以参考下图。

(2)全局颜色列表 (Global Color Table) :

全局颜色列表必须紧跟在逻辑屏幕标识符后面,每个颜色列表索引条目由三个字节组成,按R、G、B的顺序排列。

(3)图象标识符 (Image Descriptor) :一个GIF文件内可以包含多幅图象,一幅图象结束之后紧接着下是一幅图象的标识符,图象标识符以0x2C('','')字符开始,定义紧接着它的图象的性质,包括图象相对于逻辑屏幕边界的偏移量、图象大小以及有无局部颜色列表和颜色列表大小,由10个字节组成,具体如下所示。

也可以参考下图。

(4)局部颜色列表 (Local Color Table) :如果上面的局部颜色列表标志置位的话,则需要在这里(紧跟在图象标识符之后)定义一个局部颜色列表以供紧接着它的图象使用,注意使用前应线保存原来的颜色列表,使用结束之后回复原来保存的全局颜色列表。如果一个GIF文件即没有提供全局颜色列表,也没有提供局部颜色列表,可以自己创建一个颜色列表,或使用系统的颜色列表。局部颜色列表的排列方式和全局颜色列表一样:RGBRGB

(5) 基于颜色列表的图象数据 (Table-Based Image Data) :由两部分组成: LZW 编码长度 (LZW Minimum Code Size) 和图象数据 (Image Data) 。

下面给出总体的存储结构的原理图。

PC上制作软件主要为 Adobe ImageReady 和 fireworks 两个。

WEB上gif在线制作编辑 gif5net ,支持 、视频、FLASH转GIF。

我一般使用 LICEcap 制作gif图。

1 百度百科

2 GIF的文件储存结构和动画原理

3 GIF原理和储存结构深入解析

以上就是关于数据库能存图片吗全部的内容,包括:数据库能存图片吗、PNG、JPEG、BMP等几种图片格式详解(四)—— GIF、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9749645.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存