今天主要改了罗宾钢琴的首页图片缩放问题
今天觉得首页出来的图片太慢了,所以着手改图片大小的问题
查看了一下原因,问题出在产品的缩略图上,以前是直接用<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能上传就可以.
转载于:https://www.cnblogs.com/huqingyu/archive/2009/05/27/1490516.html
今天主要改了罗宾钢琴的首页图片缩放问题相关推荐
- js实现淘宝首页图片轮播效果
原文:http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=10585 <!DOCTYPE html> &l ...
- axure 图片切换图片的交互_Axure教程:首页图片轮播
图片轮播是各大网站常常见到的形式,文章带我们学习了如何用Axure实现图片轮播功能,一起来看看~ 双11刚过没多久,大家是否都参加了2000+亿的大项目呀?剁手的时候,有没有被各大电商平台的首页图片轮 ...
- 每天更新bing首页图片为桌面壁纸
功能 每天自动从bing首页下载首页图片,再添加该图片文字描述的水印,然后设置到桌面壁纸. 链接分析 打开bing首页,开chrome调试,捕捉network,再点击上一张,下一张时可以看到一个比较规 ...
- 循环抓取xkcd首页图片
#爬取xkcd首页的图片,并按照链接逐渐抓取下去 import os,requests,bs4url='https://xkcd.com/' #创建保存图片的文件夹exist_ok=True确保在存在 ...
- Java与Python下载Bing首页图片
Java与Python下载Bing首页图片 一,首先是Java代码 import org.apache.http.HttpEntity; import org.apache.http.client.m ...
- 不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果
ImageNice9Layout 项目地址:wobiancao/ImageNice9Layout 简介:不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果 写在开头: ...
- 首页轮转html代码,js制作网站首页图片轮播特效代码
本文实例为大家分享了使用js制作一般网站首页图片轮播效果的具体代码,供大家参考,具体内容如下 图片轮播 .warp{ width: 600px; height: 750px; position: re ...
- 自定义插件实现网易云音乐首页图片轮播
编写html界面 <!DOCTYPE html> <html><head><meta charset="utf-8" /><t ...
- 主页改index.php,如何更改首页默认index.php改成index.html
更改首页默认index.php改成index.html的方法:首先在apache目录找到文件[httpd.conf]:然后将每行开头[#]符号去掉:最后将DirectoryIndex改成[Direct ...
最新文章
- JQuery Tables 的应用(一)
- 获取浏览器窗口宽高问题总结
- python有没有中文版-python有中文版吗
- Google正式收购百度
- Java之美[从菜鸟到高手演变]系列之博文阅读导航
- 离散数学反对称关系_【离散数学】1.2&1.3集合与元素,集合与集合之间的关系...
- clob字段怎么导出_Oracle 11g及12c+版本下为啥有些表不能exp导出?
- java 添加注解_你知道Java中的package-info的作用吗?
- ipv4链路不通或服务器无响应,ping不通或丢包时如何进行链路测试?
- python numpy和pandas库的区别_python – 来自熊猫和numpy的意思不同
- 操作系统(2)-创建线程的几种方式
- 排序专题之C++中的sort函数调用
- AutoResetEvent 与 ManualResetEvent
- 用ps绘制中国银行的标志
- 计算机 教学活动设计方案,青岛出版社初中信息技术 七年级下册第二单元 第5课 设计活动策划方案 教学设计...
- UltraVNC:一款高层玩家使用的远程控制软件
- 执业兽医资格考试水生动物类题库
- Django设置成中文
- Unity2D游戏开发—— 解决主角连跳小BUG(在空中无限跳)
- 影视剪辑,PR剪辑蒙太奇手法的认识
热门文章
- 北京理工大学计算机学院杨晨,杨旭_北京理工大学计算机学院
- python一次读取10行_Python怎么读取Excel的行数和列数?
- 目标检测(二十三)--DenseBox
- 6. 吴恩达机器学习课程-作业6-SVM
- python3 读写json文件,python3没有读取JSON文件righ
- exif viewer java,1earn/XSS挑战-WalkThrough.md at master · dizhaung/1earn · GitHub
- kafka 幂等机制入门实例
- Windows核心编程_PE文件格式解析
- 微软官方的.net系列文档
- WPF版的权限管理系统