Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在使用sql查询中将图像大小从150*150更改为70*70?_Image_Sql Server 2008 - Fatal编程技术网

Image 在使用sql查询中将图像大小从150*150更改为70*70?

Image 在使用sql查询中将图像大小从150*150更改为70*70?,image,sql-server-2008,Image,Sql Server 2008,我将图像存储在SQL server 2008 R2数据库中的varBinarymax列中,该列名为:image1,大小为150*150。我添加了另一个名为image2 varBinarymax的列,我需要使用image1中相同的图像更新此列,但大小为70*70。是否可以使用sql查询执行此操作 我试图找到查询,但没有得到任何线索如何做到这一点。请告诉我以前是否有人这样做过,以及如何做?正如一些评论中所说,SQL是一种数据存储系统,无法编辑您的图像 我建议您使用首选语言c等对表执行一次性更新,在将

我将图像存储在SQL server 2008 R2数据库中的varBinarymax列中,该列名为:image1,大小为150*150。我添加了另一个名为image2 varBinarymax的列,我需要使用image1中相同的图像更新此列,但大小为70*70。是否可以使用sql查询执行此操作


我试图找到查询,但没有得到任何线索如何做到这一点。请告诉我以前是否有人这样做过,以及如何做?

正如一些评论中所说,SQL是一种数据存储系统,无法编辑您的图像

我建议您使用首选语言c等对表执行一次性更新,在将其更新回表中之前获取每个图像并调整其大小


然后从那时起,确保插入表中的任何图像在插入之前都已调整大小。

我同意这里每个人的观点,但如果您确实想或不得不这样做,可以在SQL Server上启用CLR集成,创建一个可以调整图像大小的程序集,然后从触发器或进程调用它。这并不难。下面是一个描述流程的页面:

基本上要在SQL Server上启用CLR,请执行以下操作:

sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
CREATE ASSEMBLY ResizeImageAssembly from 'c:\ResizeImageProc.dll' WITH PERMISSION_SET = SAFE
创建c程序集以调整图像大小:

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中加载程序集:

sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
CREATE ASSEMBLY ResizeImageAssembly from 'c:\ResizeImageProc.dll' WITH PERMISSION_SET = SAFE
创建进程

CREATE PROCEDURE ResizeImage AS EXTERNAL NAME ResizeImageAssembly.ResizeImageProc.ResizeImage
在此之后,您可以像调用正常进程一样调用它。例如:

EXEC ResizeImage(1,800,600)

SQL Server是用于存储和检索数据的数据库,而不是图像处理器。。。你不能指望T-SQL能够完成像图像大小调整这样的各种操作——这是用C或类似语言编写的应用程序的工作。是的,目前我正在使用C,但我正在尝试找到一种更快的方法。所以只需要知道SQLNo中是否有任何解决方法-SQL是关于存储和检索数据的-而不是关于图像处理,对不起。为什么不边走边调整图像大小-正如marc所说,在tsql中是不可能的,但是我想不出存储缩略图的原因,或者让我们来看看MARCARS化身——链接相当大,但是你可以注意到S=32个参数——图片的大小。您可以对您的解决方案使用相同的方法。实际上,我正在尝试在具有缩略图的listview上显示数据,如果相同的数据多次出现,那么每次我需要重新调整图像大小时,这对我在azure上的网站来说都是一个昂贵的过程。我同意这是最好的方法,使用.NET语言将使您能够相当轻松地完成这项工作。请看一下System.Drawing。