0

我有一个在 IIS 7.5 (Windows Server 2008r2) 上运行的经典 ASP 应用程序。我需要的其实很简单:

(1) 用户上传图片。

(2) 首先我想复制他们上传的图片,所以我有一个“原始”版本和一个“我们可以玩的版本”。下面的所有内容都将在“我们可以玩的版本”(新的/复制的版本)上运行。

(3) 将图像大小调整为 450w x 253h。

(4) 我想创建一个与旧图像宽度相同但高两倍的新图像(450w x 506h)。然后我想复制旧图像,将它的一个版本放在完全相同的副本之上;从而使新图像比原始图像高一倍。有点像镜像。

如果有一种方法可以在没有商业组件的情况下执行此操作,例如使用 .Net 并且我可以从我的 Classic ASP 调用 .Net 页面/功能,则首选。我的经验/知识是使用 vbScript (ASP),几乎没有任何使用 .Net 中的 VB 的经验。

这是我为解释我在做 什么而制作的图像:我正在寻找动态构建的图像 http://www.casemodo.com/images/image_build_on_the_fly.jpg

在这个网站上,我看到有人提供了一种将图像并排堆叠的解决方案,而不是像我想要的那样在另一个之上堆叠。该解决方案也是用 C# 编写的,我对此的经验为零。这是他们写的:

位图 bitmap = new Bitmap(image1.Width + image2.Width, Math.Max(image1.Height, image2.Height)); 使用 (图形 g = Graphics.FromImage(bitmap)) { g.DrawImage(image1, 0, 0); g.DrawImage(image2, image1.Width, 0); }

我需要有人与我一起达到超高水平,并向我展示这将如何位于 aspx 文件中,甚至可能我将如何从我的经典 ASP 页面之一中调用它。我知道我要求很多。我只是不知道如何以另一种方式完成它,除了可能将我没有的钱花在可以从 Classic ASP 调用的商业 ActiveX 组件上。

感谢您提供的任何帮助或指导!斯科特

4

1 回答 1

2

如您所知,这是很多东西的组合!如果有人为你写,那将是令人惊讶的。我没有时间。

顺便说一句,商业组件同样难以交互,我会挑战你找到一个来做这个晦涩的事情;-)

结合语言

使用您的功能制作一个 .NET“类库”(dll 或程序集),而不是ASP.NET 程序。您可以直接从经典的 ASP 调用它...
像这样: http: //support.microsoft.com/kb/817248
或者这样:http
://forums.asp.net/t/1442595.aspx/1 底线是,您在 .NET 项目选项“暴露给 Com/ActiveX”中检查一些内容,然后经典的 ASP 就会看到它。

将图像传入和传出。

最简单的方法是让调用者 ASP 生成一个唯一的临时文件名,将该文件保存到文件系统中,然后将该名称传递给 .NET。我将使用该方法提供伪代码。

您也可以将内容作为大字符串传递,它可以使用 System.Text.Encoding 在 .NET 中进行转换。最安全的是 base64,如果你可以在 ASP 中往返的话;字符串可能会处理 utf8,但如果您从 .NET 的“新位图”行中得到“通用 GDI+ 错误”,则数据已损坏并且转换出错。首先尝试文件方法。

请注意,在我给出的文件方法示例中,您将用内存流替换文件名。其中,您必须在字节数组之间进行转换。谷歌的一些东西,但如果你能找出 ASP 经典,你可以用我给你的搜索词找出来。

完全未经测试的 VB 代码来做图形

如果有错别字,你将不得不依靠 Intellisense、帮助和谷歌。

Public Sub DoubleImage(FileIn as string, FileOut as string)
    dim bmpIn as new Bitmap(FileIn)
    dim bmpOut as new bitmap(bmpin.width,bmpin.height*2)
    using g as new graphics.FromImage(bmpOut)
        g.drawimage(bmpin,0,0,bmpin.width,bmpin.height)
        g.drawimage(bmpin,0,bmpin.height,bmpin.width,bmpin.height)
    end using
    bmpout.save(FileOut)
end sub 

将其放入类库项目中,转到属性并将其公开给 COM。从您的 ASP 中引用它。

PS 看 GDI+FAQ 学习如何 grok .NET 图形:https ://web.archive.org/web/20141230145656/http://bobpowell.net/faqmain.aspx

于 2012-11-08T22:37:37.147 回答