今天主要改了罗宾钢琴的首页图片缩放问题

今天觉得首页出来的图片太慢了,所以着手改图片大小的问题

查看了一下原因,问题出在产品的缩略图上,以前是直接用<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能上传就可以.

posted on 2009-05-27 01:08 浙林龙哥 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/huqingyu/archive/2009/05/27/1490516.html

今天主要改了罗宾钢琴的首页图片缩放问题相关推荐

  1. js实现淘宝首页图片轮播效果

    原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> &l ...

  2. axure 图片切换图片的交互_Axure教程:首页图片轮播

    图片轮播是各大网站常常见到的形式,文章带我们学习了如何用Axure实现图片轮播功能,一起来看看~ 双11刚过没多久,大家是否都参加了2000+亿的大项目呀?剁手的时候,有没有被各大电商平台的首页图片轮 ...

  3. 每天更新bing首页图片为桌面壁纸

    功能 每天自动从bing首页下载首页图片,再添加该图片文字描述的水印,然后设置到桌面壁纸. 链接分析 打开bing首页,开chrome调试,捕捉network,再点击上一张,下一张时可以看到一个比较规 ...

  4. 循环抓取xkcd首页图片

    #爬取xkcd首页的图片,并按照链接逐渐抓取下去 import os,requests,bs4url='https://xkcd.com/' #创建保存图片的文件夹exist_ok=True确保在存在 ...

  5. Java与Python下载Bing首页图片

    Java与Python下载Bing首页图片 一,首先是Java代码 import org.apache.http.HttpEntity; import org.apache.http.client.m ...

  6. 不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果

    ImageNice9Layout 项目地址:wobiancao/ImageNice9Layout  简介:不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果 写在开头: ...

  7. 首页轮转html代码,js制作网站首页图片轮播特效代码

    本文实例为大家分享了使用js制作一般网站首页图片轮播效果的具体代码,供大家参考,具体内容如下 图片轮播 .warp{ width: 600px; height: 750px; position: re ...

  8. 自定义插件实现网易云音乐首页图片轮播

    编写html界面 <!DOCTYPE html> <html><head><meta charset="utf-8" /><t ...

  9. 主页改index.php,如何更改首页默认index.php改成index.html

    更改首页默认index.php改成index.html的方法:首先在apache目录找到文件[httpd.conf]:然后将每行开头[#]符号去掉:最后将DirectoryIndex改成[Direct ...

最新文章

  1. JQuery Tables 的应用(一)
  2. 获取浏览器窗口宽高问题总结
  3. python有没有中文版-python有中文版吗
  4. Google正式收购百度
  5. Java之美[从菜鸟到高手演变]系列之博文阅读导航
  6. 离散数学反对称关系_【离散数学】1.2&1.3集合与元素,集合与集合之间的关系...
  7. clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?
  8. java 添加注解_你知道Java中的package-info的作用吗?
  9. ipv4链路不通或服务器无响应,ping不通或丢包时如何进行链路测试?
  10. python numpy和pandas库的区别_python – 来自熊猫和numpy的意思不同
  11. 操作系统(2)-创建线程的几种方式
  12. 排序专题之C++中的sort函数调用
  13. AutoResetEvent 与 ManualResetEvent
  14. 用ps绘制中国银行的标志
  15. 计算机 教学活动设计方案,青岛出版社初中信息技术 七年级下册第二单元 第5课 设计活动策划方案 教学设计...
  16. UltraVNC:一款高层玩家使用的远程控制软件
  17. 执业兽医资格考试水生动物类题库
  18. Django设置成中文
  19. Unity2D游戏开发—— 解决主角连跳小BUG(在空中无限跳)
  20. 影视剪辑,PR剪辑蒙太奇手法的认识

热门文章

  1. 北京理工大学计算机学院杨晨,杨旭_北京理工大学计算机学院
  2. python一次读取10行_Python怎么读取Excel的行数和列数?
  3. 目标检测(二十三)--DenseBox
  4. 6. 吴恩达机器学习课程-作业6-SVM
  5. python3 读写json文件,python3没有读取JSON文件righ
  6. exif viewer java,1earn/XSS挑战-WalkThrough.md at master · dizhaung/1earn · GitHub
  7. kafka 幂等机制入门实例
  8. Windows核心编程_PE文件格式解析
  9. 微软官方的.net系列文档
  10. WPF版的权限管理系统