我将图像存储在 SQL Server 2008 R2 数据库中的 varBinary(max) 列中,名为:image1,大小为 150*150。我添加了另一个名为 image2 varBinary(max) 的列,我需要使用 image1 中的相同图像更新此列,但大小为 70*70。是否可以使用 sql 查询来做到这一点。
我试图找到查询,但没有得到任何线索如何做到这一点。请让我知道是否有人以前这样做过以及如何做到的?
我将图像存储在 SQL Server 2008 R2 数据库中的 varBinary(max) 列中,名为:image1,大小为 150*150。我添加了另一个名为 image2 varBinary(max) 的列,我需要使用 image1 中的相同图像更新此列,但大小为 70*70。是否可以使用 sql 查询来做到这一点。
我试图找到查询,但没有得到任何线索如何做到这一点。请让我知道是否有人以前这样做过以及如何做到的?
我同意这里每个人的观点,但是如果你真的想要或必须这样做,你可以在 SQL Server 上启用 CLR 集成,创建一个可以调整图像大小的程序集,然后从触发器或过程中调用它。它不是很难。这是描述该过程的页面:http: //msdn.microsoft.com/en-us/library/ms254498 (VS.80).aspx
基本上要在 SQL Server 上启用 CLR:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
创建 ac# 程序集以调整图像大小:
using System;
using System.Data;
using Microsoft.SqlServer.Server;
using System.Data.SqlTypes;
public class ResizeImageProc
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void ResizeImage(int ImageID, int width, int height)
{
//TODO: ResizeImage Code
}
}
编译程序集
csc /target:library ResizeImageProc.cs
在 SQL Server 中加载程序集:
CREATE ASSEMBLY ResizeImageAssembly from 'c:\ResizeImageProc.dll' WITH PERMISSION_SET = SAFE
创建过程
CREATE PROCEDURE ResizeImage AS EXTERNAL NAME ResizeImageAssembly.ResizeImageProc.ResizeImage
之后,您可以像普通 proc 一样调用它。例如:
EXEC ResizeImage(1,800,600)
正如一些评论中所说,SQL 是一个数据存储系统,无法编辑您的图像。
我建议您使用首选语言(c# 等)在表格上执行一次更新,获取每个图像并调整其大小,然后再将其更新回表格中。
然后从那时起,确保插入表中的任何图像在插入之前都已调整大小。