`

ASP图片缩放编程

    博客分类:
  • C#
阅读更多
今天觉得首页出来的图片太慢了,所以着手改图片大小的问题

查看了一下原因,问题出在产品的缩略图上,以前是直接用<img src=XXX.jpg  width=190 height=140>这样缩放的,其实它还是把原图下载到了本地,原图有多少大就下载多少大.而主页要显示4个图片,每个原图都有600K就要2.4M,是够大的了.

于是考虑怎么样显示缩略图.

起先开始想把上传的时候就生成缩略图,但是,现在是asp,有难度的,网上找了好久没有攻略,都说要组件才能做到,而我的服务器没有组件.这条路不通.

然后考虑是否能上传两次,一次原图,一次在本地生成缩略图再上传.想用Flex,上传原图的代码是找到了,也很简单.可是本地弄个缩略再上传,我这个初学者就不会了,似乎要用到ImageData,再Matrix什么的,一下子研究不出来.

最后没办法了.上服务器研究一下,我记得是可以用.net 1.1的,下载了一个asp.net探针,果然服务器用的是windows2003, .net 1.1,那就好办了,做一个server端的缩放就完工了.



最后showimage.aspx代码如下:
<%

try
    {
        string input_ImgUrl = "../pic/" + Request.QueryString["name"];

        // ===通过连接创建Image对象===
        System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Server.MapPath(input_ImgUrl));
        int int_Width = oldimage.Width;
        int int_Height = oldimage.Height;

        // ===上传标准图大小===
        int int_Standard_Width = Convert.ToInt32(Request.QueryString["width"]);
        int int_Standard_Height = Convert.ToInt32(Request.QueryString["height"]);

        int Reduce_Width = 0; // 缩小的宽度
        int Reduce_Height = 0; // 缩小的高度
        int level = 100; //缩略图的质量 1-100的范围

        // ===获得缩小,裁剪大小===
        double scaleHeight = ((double)int_Standard_Height / (double)int_Height);
        double scaleWidth = ((double)int_Standard_Width / (double)int_Width);

        if (scaleHeight < scaleWidth)
        {
            Reduce_Width = (int)(int_Width * scaleHeight);
            Reduce_Height = int_Standard_Height;
        }
        else if (scaleHeight > scaleWidth)
        {
            Reduce_Width = int_Standard_Width;
            Reduce_Height = (int)(int_Height * scaleWidth);
        }
        else
        {
            Reduce_Width = int_Standard_Width;
            Reduce_Height = int_Standard_Height;
        }


        // ===缩小图片===
        System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(Reduce_Width, Reduce_Height, null, IntPtr.Zero);
        System.Drawing.Bitmap bm = new System.Drawing.Bitmap(thumbnailImage);

        // ===处理JPG质量的函数===
        System.Drawing.Imaging.ImageCodecInfo[] codecs = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
        System.Drawing.Imaging.ImageCodecInfo ici = null;
        foreach (System.Drawing.Imaging.ImageCodecInfo codec in codecs)
        {
            if (codec.MimeType == "image/jpeg")
                ici = codec;
        }
        System.Drawing.Imaging.EncoderParameters ep = new System.Drawing.Imaging.EncoderParameters();
        ep.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)level);

        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        bm.Save(ms, ici, ep);
        Response.ClearContent();
        Response.BinaryWrite(ms.ToArray());
        Response.ContentType = "image/jpeg";//指定输出格式为图形

        Response.Flush();
    }
    catch (Exception e)
    {
        Response.Write(e.ToString());
    }

%>





中间过程中,用到的Flex文件上传代码:
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="vertical" verticalAlign="middle" horizontalAlign="center">

 <mx:Style>
  global {
   fontSize : 14;
  }
 </mx:Style>
 
 <mx:Script>
  <![CDATA[
   import mx.effects.Zoom;
   import mx.controls.Image;
   // 先搞 1 个 FileReference
   private var file:FileReference = new FileReference();
   
   // 上传状态指示, 和下面的文本框绑定
   [Bindable]
   private var stateText:String = "请选择一个文件上传";
   
   // createChildren 比 creationComplete 事件更早发生, 省的注册事件侦听, 直接在这里写了
   protected override function createChildren():void {
    super.createChildren();
    file.addEventListener(Event.SELECT, file_select);
    file.addEventListener(Event.COMPLETE, file_complete);
    file.addEventListener(ProgressEvent.PROGRESS, file_progress);
   }
   
   // 选择 1 个文件的事件
   private function file_select (e:Event):void {
    stateText = "选择了文件 " + file.name;
   }
   
   // 上传完毕后的事件
   private function file_complete (e:Event):void {
    stateText = "上传完毕";
   }
   
   private function file_progress (e:ProgressEvent):void {
    stateText = "已上传 " + Math.round(100 * e.bytesLoaded / e.bytesTotal) + "%";
   }
   // 先判断一下文件大小, 再上传, FileService.aspx 就是上传地址
   private function upload ():void {
    if (file.size > 0) {
     stateText = "正在上传 " + file.name;
     var request:URLRequest = new URLRequest("FileService.asp");
     file.upload(request);
     
    }
   }
   
   
  ]]>
 </mx:Script>
 
 <mx:Panel width="250" height="112" layout="vertical" title="上传示例"
  verticalAlign="middle" horizontalAlign="center" >
  <mx:HBox>
   <mx:TextInput text="{stateText}" width="160" editable="false"/>
   <mx:Button label="浏览" click="file.browse();"/>
  </mx:HBox>
  <mx:HBox>
   <mx:Button label="上传" click="upload();"/>
  </mx:HBox>
 </mx:Panel>
</mx:Application>

其中,FileService.asp使用了无组件上传技术,其实也可以用FileService.aspx来代替,只要一般的网页上的file能上传就可以.

原文:http://www.cnblogs.com/huqingyu/archive/2009/05/27/1490516.html
分享到:
评论

相关推荐

    javascript+asp图片缩放剪切

    JavaScript 和 ASP 图片缩放剪切技术是一种常见的前端与后端结合处理图像的方法,尤其在用户上传图片时,为了保持网站性能和用户体验,通常需要对图片进行预处理,包括缩放和剪切。这一技术可以应用于多种编程环境,...

    图片缩放代码,等比例显示图片

    虽然提供的文件“dbl.asp”没有包含具体的代码,我们可以假设这是一个使用VBScript(Visual Basic Script)编写的功能,用于处理图片缩放。 在VBScript中,我们可以使用GDI+(Graphics Device Interface Plus)库来...

    C# Asp.net编写实现图片缩放及裁剪例题,头像裁剪例题

    总的来说,C# ASP.NET实现图片缩放和裁剪需要理解图像处理的基本原理,熟练运用System.Drawing命名空间中的类,同时结合HTML和JavaScript实现交互功能。通过不断实践和优化,可以创建出高效、易用的头像裁剪系统。

    保存图片缩放

    总结起来,"保存图片缩放"涉及到的关键知识点包括:图片的缩放算法、图片保存的格式选择、保存时的参数设置以及编程实现这些功能的方法。熟练掌握这些技能,能够帮助我们在处理大量图片时提高效率,同时保证输出的...

    flash 真实图片缩放和裁剪

    本文将深入探讨“Flash真实图片缩放和裁剪”的技术,这是基于Adobe Flash的一个功能,用于优化和调整图像大小以及进行精准的裁剪操作。 首先,让我们了解什么是Adobe Flash。Flash是一种交互式多媒体平台,曾广泛...

    ajax+js+asp+aspjpeg实现剪切图片、拖拽图片、缩放图片、裁切图片

    "ajax+js+asp+aspjpeg实现剪切图片、拖拽图片、缩放图片、裁切图片"是一个利用前沿技术来处理图像的解决方案。这个项目的核心是通过Ajax进行异步通信,JavaScript进行前端交互,ASP作为后端服务器脚本,以及ASPJPEG...

    ASP.net图形图像编程示例

    在这个“ASP.NET图形图像编程示例”中,我们将探讨如何利用ASP.NET进行图形图像处理,包括绘制基本图形、载入图像以及动态创建图像。 1. **绘制基本图形**: 在ASP.NET中,可以使用GDI+(Graphics Device ...

    ASP图片浏览程序,图片浏器,图片浏览源码

    综上所述,ASP图片浏览程序是基于服务器端编程技术实现的网页应用,集图片展示、管理、搜索和安全控制于一体,提供良好的用户体验和可扩展性。开发者需要熟悉ASP语法、HTML、CSS、JavaScript以及可能的数据库知识,...

    客户端浏览器上可以直接对图像进行裁剪缩放和优化为web图像的ASP.NET控件

    其背后的技术涉及.NET Framework 1.1、ASP.NET控件开发、JavaScript/AJAX客户端编程、图像处理算法以及优化策略。开发者可以通过提供的示例页面和源代码来学习和使用这个控件,以提升其网站的图像处理能力。

    【ASP.NET编程知识】asp .net实现给图片添加图片水印方法示例.docx

    6. 绘制水印:使用Graphics对象的`DrawImage`方法在原始图片上绘制水印,指定其位置和缩放比例。 7. 保存结果:使用`Image.Save`方法将处理后的图片保存到文件系统。 以下是简化版的代码示例: ```csharp public ...

    asp按比例缩小图片

    "asp按比例缩小图片"这个标题所指的就是使用ASP编程语言来实现图片的等比例缩放,以确保图片在尺寸减小后保持原有的纵横比,避免失真。以下是对这个知识点的详细讲解: 1. 图片上传: ASP可以通过HTTP请求获取用户...

    asp.net实现上传图片后并显示

    4. 图片缩放:根据需要,可以在服务器端对图片进行缩放,以节省存储空间和提高显示速度。 综上所述,ASP.NET提供了一套完整的框架来实现图片上传、显示和信息获取的功能。通过合理的编程实践,我们可以创建一个安全...

    ASP图片预览区代源代码

    在ASP图片预览区代源代码中,我们可以看到一个利用ASP技术实现的简单图片浏览功能。这个小型应用允许用户在网页上预览图片,对网站上的图片资源进行直观的管理和展示。 首先,我们要理解ASP的基本工作原理。ASP脚本...

    asp.net b/s架构图像缩放与旋转

    总之,ASP.NET B/S架构图像缩放与旋转的技术实现涉及了Web服务器编程、图像处理算法、客户端脚本交互等多个层面。掌握这些技能,开发者可以构建出更加动态和交互性强的Web应用,满足用户多样化的需求。

    ASP js图片上传代码.rar

    综上所述,"ASP js图片上传代码"涉及到的技术和知识点主要包括ASP服务器端编程、JavaScript客户端交互、文件上传处理、安全措施和用户体验优化。通过这些技术,我们可以构建一个功能完善的图片上传功能,满足用户在...

    【ASP.NET编程知识】ASP.NET实现上传图片并生成缩略图的方法.docx

    ASP.NET 实现上传图片并生成缩略图的方法 该文档介绍了使用 ASP.NET 实现上传图片并生成缩略图的方法。首先,通过检查上传文件的格式是否有效,以确保上传的文件是图片格式。如果不是图片格式,則显示错误信息...

    图片特效(ASP)非常好的代码

    这个资源可能是为了帮助开发者在网站上实现各种吸引人的图像处理效果,如图片缩放、旋转、滤镜应用等。 【描述】中的“很好的资源不错的,非常好的资源”表明这个ASP图片特效代码质量高,受到用户好评。"还是免费的...

    ASP实例开发源码—74TU asp图片程序.zip

    74TU ASP图片程序可能是一个基于ASP技术构建的图片管理系统,用于上传、展示和管理图片。根据提供的文件列表,"132688985999682575"可能是一个图片文件或者数据库记录ID,而"使用须知.txt"则可能是关于如何使用这个...

    放大图片的效果asp.net

    在ASP.NET中,我们可以使用C#或VB.NET编写后端代码,处理图片的放大和缩放。以下是一些关键步骤: 1. **图片上传**:用户上传图片到服务器时,可以使用ASP.NET的FileUpload控件。确保图片格式正确,大小符合服务器...

    asp.net图片管理

    - **Web Forms**: ASP.NET Web Forms是.NET框架的一部分,它提供了事件驱动的编程模型,模拟桌面应用的开发体验。 - **控件和事件处理**:页面上的元素如按钮、文本框等都是控件,它们可以触发事件,通过事件处理...

Global site tag (gtag.js) - Google Analytics