如何从返回 ContentType 图像的 url 执行 aspx?

2023-12-01

此函数返回调整大小并居中的图像。 我想你执行它就像拇指.aspx?image=test.jpg&宽度=100&高度=50&needToFill=tru‌​e得到一个内容类型=“图像/jpeg”

public static System.Drawing.Image FixedSize(Image image, int Width, int Height, bool needToFill)
{
    int sourceWidth = image.Width;
    int sourceHeight = image.Height;
    int sourceX = 0;
    int sourceY = 0;
    double destX = 0;
    double destY = 0;
    double nScale = 0;
    double nScaleW = 0;
    double nScaleH = 0;
    nScaleW = ((double)Width / (double)sourceWidth);
    nScaleH = ((double)Height / (double)sourceHeight);
    if (!needToFill)
    {
        nScale = Math.Min(nScaleH, nScaleW);
    }
    else
    {
        nScale = Math.Max(nScaleH, nScaleW);
        destY = (Height - sourceHeight * nScale) / 2;
        destX = (Width - sourceWidth * nScale) / 2;
    }
    if (nScale > 1)
        nScale = 1;
    int destWidth = (int)Math.Round(sourceWidth * nScale);
    int destHeight = (int)Math.Round(sourceHeight * nScale);

    System.Drawing.Bitmap bmPhoto = null;
    try
    {
        bmPhoto = new System.Drawing.Bitmap(destWidth + (int)Math.Round(2 * destX), destHeight + (int)Math.Round(2 * destY));
    }
    catch (Exception ex)
    {
        throw new ApplicationException(string.Format("destWidth:{0}, destX:{1}, destHeight:{2}, desxtY:{3}, Width:{4}, Height:{5}",
            destWidth, destX, destHeight, destY, Width, Height), ex);
    }
    using (System.Drawing.Graphics grPhoto = System.Drawing.Graphics.FromImage(bmPhoto))
    {
        grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic;
        grPhoto.CompositingQuality = CompositingQuality.HighQuality;
        grPhoto.SmoothingMode = SmoothingMode.HighQuality;
        Rectangle to =  new System.Drawing.Rectangle((int)Math.Round(destX), (int)Math.Round(destY), destWidth, destHeight);
        Rectangle from = new System.Drawing.Rectangle(sourceX, sourceY, sourceWidth, sourceHeight);
        grPhoto.DrawImage(image, to, from, System.Drawing.GraphicsUnit.Pixel);
        return bmPhoto;
    }
}

我可以以某种方式添加这个吗?

void Page_Load(Object sender, EventArgs e){

您可以使用 HTTP Handler 来满足此类要求。 ASP.NET HTTP 处理程序是为响应对 ASP.NET Web 应用程序发出的请求而运行的进程(通常称为“端点”)。要了解更多信息,请查看HTTP 处理程序和 HTTP 模块概述

ASHX 示例

要处理这样的请求:http://localhost:19610/ImageHandler.ashx?width=200&height=200

  1. 将新的通用处理程序 (.ashx) 添加到项目并命名ImageHandler.ashx
  2. 编写代码从查询字符串中获取参数并执行处理并返回合适的响应:
using System;
using System.Collections.Generic;
using System.Web;
using System.Drawing;

namespace WebApplication1 /*use your application namespace*/
{
    public class ImageHandler: IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            int width = 0;
            int.TryParse(context.Request.QueryString["width"], out width);
            var height = 0;
            int.TryParse(context.Request.QueryString["height"], out height);
            if (width <= 0) width = 100;
            if (height <= 0) height = 100;
            using (var image = new Bitmap(width, height))
            {
                using (var g = Graphics.FromImage(image))
                    g.Clear(Color.Red);
                byte[] buffer = 
                    (byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));
                context.Response.ContentType = "image/bmp";
                context.Response.OutputStream.Write(buffer, 0, buffer.Length);
            }
        }
        public bool IsReusable { get { return false; } }
    }
}

ASPX 示例

如果出于任何原因您想使用aspx相反,您可以创建一个不带任何代码隐藏文件的 aspx 文件,如下所示:

<%@ Page Title="Home Page" Language="C#" %>
<script language="C#" runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        int width = 0;
        int.TryParse(Request.QueryString["width"], out width);
        var height = 0;
        int.TryParse(Request.QueryString["height"], out height);
        if (width <= 0) width = 100;
        if (height <= 0) height = 100;
        using (var image = new System.Drawing.Bitmap(width, height))
        {
            using (var g = System.Drawing.Graphics.FromImage(image))
                g.Clear(System.Drawing.Color.Red);
            byte[] buffer =
            (byte[])new System.Drawing.ImageConverter().ConvertTo(image, typeof(byte[]));
            Response.ContentType = "image/bmp";
            Response.OutputStream.Write(buffer, 0, buffer.Length);
        }
    }
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从返回 ContentType 图像的 url 执行 aspx? 的相关文章

  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 获取 WPF 控件的所有附加事件处理程序

    我正在开发一个应用程序 在其中动态分配按钮的事件 现在的问题是 我希望获取按钮单击事件的所有事件 因为我希望删除以前的处理程序 我尝试将事件处理程序设置为 null 如下所示 Button Click null 但是我收到了一个无法分配 n
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 加密和解密图像.net

    谁能给我一个使用 net 和 asp net 加密和解密图像的示例 当我将图像作为二进制数据保存到 SQL Server 中时 我希望对图像进行加密 包含这些名称空间 using System IO using System Securit
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 无需安装即可部署 Expression Encoder SDK

    我试图在使用 Microsoft Expression Encoder 3 SDK 时证明一个概念 我正在尝试将 SDK 部署到我的托管 Web 服务器 以了解更多关于它是否有效以及还需要安装什么的信息 我无法在服务器上进行任何操作 以下是
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 编译时“strlen()”有效吗?

    有时需要将字符串的长度与常量进行比较 例如 if line length gt 2 Do something 但我试图避免在代码中使用 魔法 常量 通常我使用这样的代码 if line length gt strlen Do somethi
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 使用 capture.get(CV_CAP_PROP_FPS) 时 OpenCV 报告 TBR 而不是 FPS

    我尝试在 Mac OS 10 6 8 Snow Leopard 上使用 OpenCV 和 Qt 4 7 4 处理几个视频 如果我创建一个cv VideoCapture对象 然后查询与此类视频相关的帧速率 我得到的是 TBR 而不是 FPS
  • 通过require在不同的Lua状态之间共享全局变量

    我正在尝试找到一种方法来共享特定Lua脚本的全局变量 test lua在示例中 不同 Lua 状态之间 这是我的简单示例代码 In test lua num 2 In main cpp include
  • c函数参数评估和传递[重复]

    这个问题在这里已经有答案了 我有一个很小的代码 但我不明白为什么输出是这样的 这里是 include
  • 如何在 jQuery 动画中连续旋转子元素?

    我有一个类为 bannergroup 的 div 其中包含多个 div banneritem 我希望这些项目能够相互旋转 淡入然后淡出 我可以在类横幅组中放置多个 div 并且每个 div 都应单独旋转 这是 HTML div class
  • 如何用数组编组哈希?

    我应该做什么编组数组的哈希值 以下代码仅打印 s Hash new s default Array new s 0 lt lt Tigger s 7 lt lt Ruth s 7 lt lt Puuh data Marshal dump s
  • range-v3 如何操作::使用分隔符连接

    我从 git 获取 MSVC 的 range v3 并通过MSVC C 14编译器进行编译 考虑代码 auto getter2 const std string r return r r std vector
  • 如何将 ul 元素水平居中对齐

    我无法对齐包含在ul 到其容器的水平中心 怎么做 See a jsFiddle 上菜单的现场演示 li a href aboutus php AboutUs a ul class sub li a href aboutsquare php
  • 如何通过 Python Pandas 正确规范 json

    我想做的是通过 Pandas 加载外汇历史价格数据的 json 文件并对数据进行统计 我已经了解了许多有关 Pandas 和解析 json 文件的主题 我想将带有额外值和嵌套列表的 json 文件传递 给 pandas 数据框 我有一个 j
  • 每当有新行或任何新更新时就从 Cassandra 数据库中提取数据吗?

    我正在开发一个系统 需要将 Avro 模式存储在 Cassandra 数据库中 所以在 Cassandra 中我们将存储这样的东西 SchemaId AvroSchema 1 some schema 2 another schema 现在假
  • 添加与第一个 y 轴相关的第二个 y 轴

    我希望你们中的一位能够提供帮助 我有一张图 其中一个 y 轴值和一个与这些 y 值相对应的 x 轴 我想在图的右侧添加第二个 y 轴 将出现在第二个 y 轴上的值是通过第一个 y 轴值通过某种关系确定的 例如 y2 可能是y2 y1 2 1
  • Google Places API - 如何将免费配额增加到每天 150,000 个请求?

    在 Google Developers 控制台中 如果我选择我的 API 项目 则会出现一个 配额 选项卡 在 计费状态 下有一个 申请更高配额 链接 该链接链接到一个页面 该页面显示 Google Places API Web 服务强制执
  • 如何使用 React Native 在 Android 上使用与 ios 相同的自定义字体

    我正在使用 React Native 为 ios 和 android 使用相同的代码 现在在我的项目中我想为两者使用自定义字体 我知道如何在 ios 上应用自定义字体 但那些相同的字体也如何在 android 上应用 新样本 我在下面添加了
  • 使用 numpy 将整数拆分为数字

    我有个问题 这个问题之前就被问过 但据我所知从未使用过 numpy 我想将一个值拆分为不同的数字 做某事并返回一个数字 根据下面的问题我可以做我想做的事 但我更喜欢在 numpy 中完成这一切 我希望它更有效 因为我不会来回更改 numpy
  • 未捕获的类型错误:无法读取未定义的属性“状态” - React

    我不知道我是否在这里遗漏了一些小东西 只是想了解状态如何与 React 一起工作 只需创建一个小复选框 在选中 取消选中时更改文本 import React from react export default class Basic ext
  • 动态 SQL - 检查语法和语义

    使用 Oracle 动态 SQL 我们可以执行包含 SQL 语句的字符串 例如 l stmt select count from tab1 execute immediate l stmt 是否可以不执行l stmt但以编程方式检查语法和语
  • 从 WPF 应用程序引用 Silverlight 类库时出错

    我有一个 WPF 应用程序和一个 Silverlight 应用程序 它们都用于显示地图并共享一些相同的功能 为了保持 DRY 我创建了一个 Silverlight 类库项目 我从 Silverlight 和 WPF 中引用了这一点 它包含一
  • 提交机器特定的配置文件

    我开发时的一个常见情况是代码库将有几个需要机器特定设置的配置文件 这些文件将被签入 Git 而其他开发人员总是会意外地将它们重新签入并破坏其他人的配置 一个简单的解决方案是不将它们签入 Git 甚至另外为它们添加一个 gitignore 条
  • iOS 中不同位置的存储数据库有何不同?

    我正在使用 SQLite swift 文档中数据库的路径为 let path NSSearchPathForDirectoriesInDomains DocumentDirectory UserDomainMask true first 但
  • 如何从 C 中具有前导空格的 stdin 获取字符串输入?

    需要一个解决方案来让输入字符串以空格开头吗 我知道一种在输入中包含空格的方法 scanf n s s 但它仅适用于单词之间的空格 我需要一个以空格开头的字符串的解决方案 我还需要变量中的起始空格 为了得到一个line用户输入 使用fgets
  • 如何从返回 ContentType 图像的 url 执行 aspx?

    此函数返回调整大小并居中的图像 我想你执行它就像拇指 aspx image test jpg 宽度 100 高度 50 needToFill tru e得到一个内容类型 图像 jpeg public static System Drawin