使用SQL Server存储和访问图片(sqlserver放图片)
图片是网站必不可少的内容之一,早在计算机的发展过程中,就有人利用数据库系统来存储和访问图片。在SQL Server中存储和访问图片可以更有效地使用空间并更加有效地节省时间。
首先,要存储一张图片,可以将图片的内容以Base64编码的形式存储在数据库中,而不是将图片存储在服务器上。例如下面的SQL语句可以将来自磁盘上的图片存储在数据库中:
DECLARE @Image VARBINARY(MAX)
SELECT @Image = CAST(bulkcolumn as VARBINARY(MAX)) FROM OPENROWSET(BULK N’c:\path\MyImage.jpg’, SINGLE_BLOB) x
INSERT INTO Images VALUES (@Image)
另外,可以使用存储过程来查询图片,例如:
CREATE PROCEDURE FindImage
@imageId intAS
BEGINSELECT * FROM Images WHERE id = @imageId
END
最后,要把图片转换成不同的格式,也是相对容易的,例如可以使用以下代码将图片转换成png格式:
DECLARE @myImage VARBINARY(MAX)
DECLARE @myImageDatatype NVARCHAR(20)
SELECT @myImage = [imageData] FROM Images
WHERE ImageId = @imageId
SELECT @myImageDatatype = [imageType] FROM Images
WHERE ImageId = @imageId
SELECT CAST(@myImage AS VARBINARY(MAX)) AS [Image] INTO #temp
EXEC xp_iv_adjust_os_version 0EXEC sp_OACreate 'WIA.ImageFile',@MyImage OUTPUT
EXEC sp_OASetProperty @MyImage,'SaveFileName','C:\\MyImagePng.png'EXEC sp_OASetProperty @MyImage,'FormatID',
CASE WHEN @ImageDatatype='JPG' then 'jpg'
WHEN @ImageDatatype='GIF' then 'gif' WHEN @ImageDatatype='BMP' then 'bmp'
ELSE 'png' END
EXEC sp_OAMethod @MyImage,'SaveFile'EXEC sp_OADestory @MyImage
SELECT * FROM #temp DROP TABLE #temp
通过以上代码,就可以使用SQL Server存储和访问图片了。有了数据库系统,可以更加有效地存储图片,还可以使用编程手段,来自动转换图片,提高对图片的处理效率。