婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 模擬QQ心情圖片上傳預覽示例

模擬QQ心情圖片上傳預覽示例

熱門標簽:寧波自動外呼系統代理 怎么給超市做地圖標注入駐店 外呼系統代理品牌 外呼系統費用一年 世紀佳緣地圖標注怎么去掉 十堰正規電銷機器人系統 辦理400電話證件 手機地圖標注如何刪除 巫師3為什么地圖標注的財寶沒有
出于安全性能的考慮,目前js端不支持獲取本地圖片進行預覽,正好在做一款類似于QQ心情的發布框,找了不少jquery插件,沒幾個能滿足需求,因此自己使用SWFuplad來實現這個圖片上傳預覽。

先粘上以下插件,在別的圖片上傳功能說不定各位能用的上。

1、jQuery File Upload

Demo地址:http://blueimp.github.io/jQuery-File-Upload/
優點是使用jquery進行圖片的異步上傳,可控性好,可根據自己的需求任意定制;
缺點是在IE9等一些瀏覽器中,不支持圖片預覽,圖片選擇框中不支持多文件選擇(這點是我拋棄它的原因);

2、CFUpdate

Demo地址:http://www.access2008.cn/update/
優點:使用js+flash實現,兼容所有瀏覽器,優點界面效果還可以,支持批量上傳、支持預覽、進度條、刪除等功能,作為圖片的上傳控件非常好用;
缺點:定制型插件,只能修改顏色,樣式已經固定死了;

3、SWFUpload

下載地址:http://code.google.com/p/swfupload/
中文文檔幫助地址:http://www.phptogether.com/swfuploadoc/#uploadError
本文所使用的就是此插件,使用flash+jquery實現,可以更改按鈕及各種樣式;監聽事件也很全。

以下貼出源碼及設計思路,主要功能點包括:
1、圖片的上傳預覽(先將圖片上傳至服務器,然后再返回地址預覽,目前拋開html5比較靠譜的預覽方式)
2、縮略圖的產生(等比例縮放后再截取中間區域作為縮略圖,類似QQ空間的做法,不過貌似QQ空間加入了人臉識別的功能)

以下是此次實現的功能截圖:
 
1、Thumbnail.cs

復制代碼 代碼如下:

public class Thumbnial
{
/// summary>
/// 生成縮略圖
/// /summary>
/// param name="imgSource">原圖片/param>
/// param name="newWidth">縮略圖寬度/param>
/// param name="newHeight">縮略圖高度/param>
/// param name="isCut">是否裁剪(以中心點)/param>
/// returns>/returns>
public static Image GetThumbnail(System.Drawing.Image imgSource, int newWidth, int newHeight, bool isCut)
{
int rWidth = 0; // 等比例縮放后的寬度
int rHeight = 0; // 等比例縮放后的高度
int sWidth = imgSource.Width; // 原圖片寬度
int sHeight = imgSource.Height; // 原圖片高度
double wScale = (double)sWidth / newWidth; // 寬比例
double hScale = (double)sHeight / newHeight; // 高比例
double scale = wScale hScale ? wScale : hScale;
rWidth = (int)Math.Floor(sWidth / scale);
rHeight = (int)Math.Floor(sHeight / scale);
Bitmap thumbnail = new Bitmap(rWidth, rHeight);
try
{
// 如果是截取原圖,并且原圖比例小于所要截取的矩形框,那么保留原圖
if (!isCut scale = 1)
{
return imgSource;
}

using (Graphics tGraphic = Graphics.FromImage(thumbnail))
{
tGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; /* new way */
Rectangle rect = new Rectangle(0, 0, rWidth, rHeight);
Rectangle rectSrc = new Rectangle(0, 0, sWidth, sHeight);
tGraphic.DrawImage(imgSource, rect, rectSrc, GraphicsUnit.Pixel);
}

if (!isCut)
{
return thumbnail;
}
else
{
int xMove = 0; // 向右偏移(裁剪)
int yMove = 0; // 向下偏移(裁剪)
xMove = (rWidth - newWidth) / 2;
yMove = (rHeight - newHeight) / 2;
Bitmap final_image = new Bitmap(newWidth, newHeight);
using (Graphics fGraphic = Graphics.FromImage(final_image))
{
fGraphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; /* new way */
Rectangle rect1 = new Rectangle(0, 0, newWidth, newHeight);
Rectangle rectSrc1 = new Rectangle(xMove, yMove, newWidth, newHeight);
fGraphic.DrawImage(thumbnail, rect1, rectSrc1, GraphicsUnit.Pixel);
}

thumbnail.Dispose();

return final_image;
}
}
catch (Exception e)
{
return new Bitmap(newWidth, newHeight);
}
}
}

2、圖片上傳處理程序Upload.ashx
復制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Drawing;

namespace Mood
{
/// summary>
/// Upload 的摘要說明
/// /summary>
public class Upload : IHttpHandler
{
Image thumbnail;

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
try
{
string id = System.Guid.NewGuid().ToString();
HttpPostedFile jpeg_image_upload = context.Request.Files["Filedata"];
Image original_image = System.Drawing.Image.FromStream(jpeg_image_upload.InputStream);
original_image.Save(System.Web.HttpContext.Current.Server.MapPath("~/Files/" + id + ".jpg"));
int target_width = 200;
int target_height = 150;
string path = "Files/Files200/" + id + ".jpg";
string saveThumbnailPath = System.Web.HttpContext.Current.Server.MapPath("~/" + path);
thumbnail = Thumbnial.GetThumbnail(original_image, target_width, target_height, true);
thumbnail.Save(saveThumbnailPath);
context.Response.Write(path);
}
catch (Exception e)
{
// If any kind of error occurs return a 500 Internal Server error
context.Response.StatusCode = 500;
context.Response.Write("上傳過程中出現錯誤!");
}
finally
{
if (thumbnail != null)
{
thumbnail.Dispose();
}
}
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

3、前臺界面Mood.aspx
復制代碼 代碼如下:

%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Mood.aspx.cs" Inherits="Mood.Mood" %>

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head runat="server">
script src="SwfUpload/swfupload.js" type="text/javascript">/script>
script src="jquery-1.7.1.js" type="text/javascript">/script>
link href="Style/Mood.css" rel="stylesheet" type="text/css" />
title>/title>
script type="text/javascript">
$().ready(function () {
SetSwf();
$("#btnReply").click(function () {
$("#divImgs").hide();
});
});

var swfu;
function SetSwf() {
swfu = new SWFUpload({
// Backend Settings
upload_url: "Upload.ashx",
// File Upload Settings
file_size_limit: "20 MB",
file_types: "*.jpg;*.png;*jpeg;*bmp",
file_types_description: "JPG;PNG;JPEG;BMP",
file_upload_limit: "0", // Zero means unlimited
file_queue_error_handler: fileQueueError,
file_dialog_complete_handler: fileDialogComplete,
upload_progress_handler: uploadProgress,
upload_error_handler: uploadError,
upload_success_handler: uploadSuccess,
upload_complete_handler: uploadComplete,
// Button settings
button_image_url: "/Style/Image/4-16.png",
button_placeholder_id: "divBtn",
button_width: 26,
button_height: 26,

// Flash Settings
flash_url: "/swfupload/swfupload.swf",

custom_settings: {
upload_target: "divFileProgressContainer"
},

// Debug Settings
debug: false
});
}

// 文件校驗
function fileQueueError(file, errorCode, message) {
try {
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
alert("上傳文件有錯誤!");
break;
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
alert("上傳文件超過限制(20M)!");
break;
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
default:
alert("文件出現錯誤!");
break;
}
} catch (ex) {
this.debug(ex);
}

}

// 文件選擇完畢時觸發
function fileDialogComplete(numFilesSelected, numFilesQueued) {
try {
if (numFilesQueued > 0) {
$("#divImgs").show();
for (var i = 0; i numFilesQueued; i++) {
$("#ulUpload").append('li id="li' + i + '">img class="imgload" src="/style/image/loading.gif" alt="" />/li>');
}

this.startUpload();
}
} catch (ex) {
this.debug(ex);
}
}

// 滾動條的處理方法 暫時沒寫
function uploadProgress(file, bytesLoaded) {
}

// 每個文件上傳成功后的處理
function uploadSuccess(file, serverData) {
try {
var index = file.id.substr(file.id.lastIndexOf('_') + 1);
$("#li" + index).html("");
$("#li" + index).html('img src="' + serverData + '" alt=""/>');
index++;

} catch (ex) {
this.debug(ex);
}
}

// 上傳完成后,觸發下一個文件的上傳
function uploadComplete(file) {
try {
if (this.getStats().files_queued > 0) {
this.startUpload();
}
} catch (ex) {
this.debug(ex);
}
}

// 單個文件上傳錯誤時處理
function uploadError(file, errorCode, message) {
var imageName = "imgerror.png";
try {
var index = file.id.substr(file.id.lastIndexOf('_') + 1);
$("#li" + index).html("");
$("#li" + index).html('img src="/style/image/imgerror.png" alt=""/>');
index++;
} catch (ex3) {
this.debug(ex3);
}
}
/script>
/head>
body>
form id="form1" runat="server">
div style="width: 600px;">
div class="divTxt">
文本框
/div>
div style="height: 30px; line-height: 30px;">
div id="divBtn" style="float: left; width: 26px; height: 26px;">
/div>
div style="float: right;">
input id="btnReply" type="button" value="發表" />
/div>
/div>
div id="divImgs" style="border: 1px solid #cdcdcd; display: none;">
div>
上傳圖片/div>
ul id="ulUpload" class="ulUpload">
/ul>
/div>
/div>
/form>
/body>
/html>

使用Vs2010開發,以下為項目源碼地址

您可能感興趣的文章:
  • jQuery判斷多個input file 都不能為空的例子
  • 上傳圖片預覽JS腳本 Input file圖片預覽的實現示例
  • js 獲取、清空input type="file"的值示例代碼
  • 將input file的選擇的文件清空的兩種解決方案
  • 讀取input:file的路徑并顯示本地圖片的方法
  • js 實現 input type="file" 文件上傳示例代碼
  • 判斷多個input type=file是否有已經選擇好文件的代碼
  • input file的默認value清空與賦值方法
  • css美化input file按鈕的代碼方法
  • ie8本地圖片上傳預覽示例代碼
  • javascript 圖片上傳預覽-兼容標準
  • input file上傳 圖片預覽功能實例代碼

標簽:通遼 泰州 景德鎮 天門 牡丹江 嘉興 山西 平涼

巨人網絡通訊聲明:本文標題《模擬QQ心情圖片上傳預覽示例》,本文關鍵詞  模擬,心情,圖片,上傳,預覽,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《模擬QQ心情圖片上傳預覽示例》相關的同類信息!
  • 本頁收集關于模擬QQ心情圖片上傳預覽示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品久久久久久久浪潮网站 | 亚洲综合一区二区精品导航| 国产亚洲精品超碰| 国产亚洲一区二区三区四区| 中文字幕在线不卡一区二区三区 | 日本一区二区综合亚洲| 亚洲国产高清aⅴ视频| 中文字幕永久在线不卡| 蜜臀av性久久久久蜜臀av麻豆| 粉嫩av一区二区三区在线播放| 5566中文字幕一区二区电影| 国产aⅴ综合色| 亚洲一区中文在线| 在线国产电影不卡| 91天堂素人约啪| 国产精品免费看片| 色综合视频一区二区三区高清| 2021久久国产精品不只是精品| 美女网站在线免费欧美精品| 91麻豆精品国产91久久久资源速度 | 综合欧美一区二区三区| 激情小说亚洲一区| 成人国产电影网| 亚洲天堂av一区| 欧美在线播放高清精品| 亚洲一区二区三区激情| 在线观看免费一区| 日韩和的一区二区| 精品国产不卡一区二区三区| 蜜臀精品一区二区三区在线观看| 欧美色图天堂网| 亚洲综合无码一区二区| 欧洲一区在线观看| 奇米888四色在线精品| 久久精品视频免费观看| 在线免费视频一区二区| 狠狠色丁香久久婷婷综| 欧美国产日韩亚洲一区| 欧美日韩美少妇| 国产999精品久久久久久绿帽| 亚洲特黄一级片| 中文字幕精品三区| 欧美日韩亚洲不卡| 大桥未久av一区二区三区中文| 亚洲激情成人在线| 国产精品网站在线观看| 欧美一级日韩一级| 欧美综合色免费| 色综合天天综合在线视频| 麻豆一区二区99久久久久| 亚洲摸摸操操av| 国产精品久久久久久一区二区三区 | 日本伊人色综合网| 国产精品久久精品日日| 久久九九久精品国产免费直播| 在线观看av一区二区| 一本到一区二区三区| www.性欧美| 一本到不卡精品视频在线观看 | 亚洲人成网站精品片在线观看| 国产日韩av一区二区| 欧美激情一区二区三区蜜桃视频| 久久综合五月天婷婷伊人| 国产精品九色蝌蚪自拍| 亚洲国产精品激情在线观看| 亚洲男人的天堂av| 日韩中文字幕一区二区三区| 麻豆成人久久精品二区三区红| 国产又黄又大久久| 不卡一区二区中文字幕| 欧美人xxxx| 亚洲日本丝袜连裤袜办公室| 国产精品91一区二区| 中文字幕不卡三区| 香蕉成人啪国产精品视频综合网| 日韩电影免费在线| 91丨porny丨最新| 欧美一区二区在线看| 久久久天堂av| 蜜臀久久久久久久| 亚洲精品国久久99热| 狠狠色丁香久久婷婷综合_中| 在线一区二区三区四区五区 | 精品日产卡一卡二卡麻豆| 国产精品素人一区二区| 精品中文字幕一区二区| 欧美男同性恋视频网站| 一区二区三区欧美日| 91麻豆成人久久精品二区三区| 欧美tickling挠脚心丨vk| 亚洲一区二区精品久久av| 99精品国产91久久久久久| 国产精品成人免费| 99综合影院在线| 国产精品成人午夜| 97久久精品人人爽人人爽蜜臀| 国产精品欧美久久久久无广告| 黄网站免费久久| 久久久美女毛片| 国产成人亚洲综合a∨婷婷| 久久午夜羞羞影院免费观看| 国产成人在线影院| 国产精品久久久久久久浪潮网站| 91日韩一区二区三区| 91麻豆福利精品推荐| 蜜桃一区二区三区在线观看| 欧美经典三级视频一区二区三区| 狠狠色狠狠色综合系列| 国产精品美女久久久久久久 | 国产一区二区中文字幕| 国产精品网站在线播放| 国产成人av影院| 日本一区二区成人在线| 91久久精品网| 午夜av区久久| 国产欧美日韩三级| 777精品伊人久久久久大香线蕉| 国产无遮挡一区二区三区毛片日本| 色哟哟一区二区在线观看| 中文字幕一区二区三区不卡在线 | 天天操天天色综合| 日韩三级在线免费观看| 成人一级片在线观看| 精品中文字幕一区二区| 精品久久久久久最新网址| 欧美日韩大陆一区二区| 91精品国产综合久久福利| 麻豆成人av在线| 91视频一区二区三区| 国产乱码精品一区二区三区忘忧草| 午夜影院久久久| 日韩黄色片在线观看| 午夜不卡在线视频| 毛片av一区二区| 精品一区二区国语对白| 成人精品在线视频观看| 欧美自拍偷拍一区| 日韩美女视频在线| 国产欧美日韩另类一区| 亚洲尤物在线视频观看| 日本欧美加勒比视频| 国产成人av自拍| 91精品国产免费久久综合| 中文字幕中文字幕一区| 日韩成人免费电影| 成人免费黄色大片| 欧美日韩在线电影| 久久蜜桃av一区精品变态类天堂| 国产女人18水真多18精品一级做| 亚洲免费观看高清| 老司机免费视频一区二区| 风间由美中文字幕在线看视频国产欧美| 亚洲一二三四在线观看| 免费观看30秒视频久久| 成人听书哪个软件好| 色噜噜久久综合| 欧美电影免费提供在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 国产日韩欧美精品电影三级在线| 中文字幕免费一区| 青青草国产成人av片免费| 成人黄色av电影| 精品日韩成人av| 国产精品成人免费在线| 奇米综合一区二区三区精品视频| 日本三级亚洲精品| 在线免费av一区| 久久伊人蜜桃av一区二区| 一区二区不卡在线播放| www.av精品| 亚洲特黄一级片| 99久久99精品久久久久久| 26uuu国产日韩综合| 日韩va欧美va亚洲va久久| 欧美色国产精品| 亚洲线精品一区二区三区| 91在线视频18| 樱桃国产成人精品视频| 99r国产精品| 国产精品免费人成网站| 91伊人久久大香线蕉| 中文字幕亚洲电影| 粉嫩av一区二区三区在线播放| 久久久五月婷婷| 一本久道中文字幕精品亚洲嫩| 亚洲色图19p| 欧美日韩在线一区二区| 秋霞电影一区二区| 久久久99久久| 日韩黄色在线观看| 日本一区二区三区在线观看| 性欧美疯狂xxxxbbbb| 欧美精品一区二区三区蜜桃| 久久99精品国产.久久久久久| 亚洲欧洲在线观看av| 2014亚洲片线观看视频免费| 2020国产精品自拍| 91视频在线观看| 狠狠狠色丁香婷婷综合久久五月| 欧美韩日一区二区三区四区|