程序就比較難了,我們不是每個(gè)人都會(huì)運(yùn)用,簡(jiǎn)單的方法我們也可以做到啊,迅捷圖片壓縮阮籍N就是挺好用的,額暗沉之后我們用html語(yǔ)言設(shè)置圖片的高與寬,然后代入圖片文件的代碼就可以完成了。
目前成都創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、宜興網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
Clipic.js插件可以為移動(dòng)端 (僅支持移動(dòng)端) 提供頭像上傳并裁剪成指定尺寸,用原生js開(kāi)發(fā)的,輕量級(jí),包含html跟css,不到8kb。點(diǎn)此鏈接體驗(yàn):
參數(shù)說(shuō)明
width:Number (默認(rèn):500) – 裁剪寬度
height:Number (默認(rèn):500) – 裁剪高度
ratio:Number (可選) – 裁剪的比例,當(dāng)傳入ratio時(shí)width/height將無(wú)效
src:String (必傳) – 需要裁剪的圖片,可以是圖片鏈接,或者 base64
type:String (默認(rèn):jpeg) – 裁剪后圖片的類型,僅支持 jpeg/png 兩種
quality:Number (默認(rèn):0.9) – 壓縮質(zhì)量
buttonText:Array (默認(rèn):[‘取消’, ‘重置’, ‘完成’]) – 底部三個(gè)按鈕文本
給你個(gè)圖片處理的類吧,圖片剪裁處理后,也就等于將圖片壓縮了。
/**
*?圖像處理類
*?============================================================================
*?Copyright?2014?大秦科技,并保留所有權(quán)利。
*?網(wǎng)站地址:?;
*?============================================================================
*/
class?Image{
//生成縮略圖的方式
public?$thumbType;
//縮略圖的寬度
public?$thumbWidth;
//縮略圖的高度
public?$thumbHeight;
//生成縮略圖文件名后綴
public?$thumbEndFix;
//縮略圖文件前綴
public?$thumbPreFix;
/**
*?構(gòu)造函數(shù)
*/
public?function?__construct(){
$this-thumbType?=?1;
$this-thumbWidth?=?120;
$this-thumbHeight?=?60;
$this-thumbPreFix?='';
$this-thumbEndFix?=??'_thumb';
}
/**
*?檢測(cè)是否為圖像文件
*?@param?$img?圖像
*?@return?bool
*/
private?function?check($img){
$type?=?array(".jpg",?".jpeg",?".png",?".gif");
$imgType?=?strtolower(strrchr($img,?'.'));
return?extension_loaded('gd')??file_exists($img)??in_array($imgType,?$type);
}
/**
*?獲得縮略圖的尺寸信息
*?@param?$imgWidth?原圖寬度
*?@param?$imgHeight?原圖高度
*?@param?$thumbWidth?縮略圖寬度
*?@param?$thumbHeight?縮略圖的高度
*?@param?$thumbType?處理方式
*?1?固定寬度??高度自增?2固定高度??寬度自增?3固定寬度??高度裁切
*?4?固定高度?寬度裁切?5縮放最大邊?原圖不裁切
*?@return?mixed
*/
private?function?thumbSize($imgWidth,?$imgHeight,?$thumbWidth,?$thumbHeight,?$thumbType){
//初始化縮略圖尺寸
$w?=?$thumbWidth;
$h?=?$thumbHeight;
//初始化原圖尺寸
$cuthumbWidth?=?$imgWidth;
$cuthumbHeight?=?$imgHeight;
switch?($thumbType)?{
case?1?:
//固定寬度??高度自增
$h?=?$thumbWidth?/?$imgWidth?*?$imgHeight;
break;
case?2?:
//固定高度??寬度自增
$w?=?$thumbHeight?/?$imgHeight?*?$imgWidth;
break;
case?3?:
//固定寬度??高度裁切
$cuthumbHeight?=?$imgWidth?/?$thumbWidth?*?$thumbHeight;
break;
case?4?:
//固定高度??寬度裁切
$cuthumbWidth?=?$imgHeight?/?$thumbHeight?*?$thumbWidth;
break;
case?5?:
//縮放最大邊?原圖不裁切
if?(($imgWidth?/?$thumbWidth)??($imgHeight?/?$thumbHeight))?{
$h?=?$thumbWidth?/?$imgWidth?*?$imgHeight;
}?elseif?(($imgWidth?/?$thumbWidth)??($imgHeight?/?$thumbHeight))?{
$w?=?$thumbHeight?/?$imgHeight?*?$imgWidth;
}?else?{
$w?=?$thumbWidth;
$h?=?$thumbHeight;
}
break;
default:
//縮略圖尺寸不變,自動(dòng)裁切圖片
if?(($imgHeight?/?$thumbHeight)??($imgWidth?/?$thumbWidth))?{
$cuthumbWidth?=?$imgHeight?/?$thumbHeight?*?$thumbWidth;
}?elseif?(($imgHeight?/?$thumbHeight)??($imgWidth?/?$thumbWidth))?{
$cuthumbHeight?=?$imgWidth?/?$thumbWidth?*?$thumbHeight;
}
//????????????}
}
$arr?[0]?=?$w;
$arr?[1]?=?$h;
$arr?[2]?=?$cuthumbWidth;
$arr?[3]?=?$cuthumbHeight;
return?$arr;
}
/**
*?圖片裁切處理
*?@param?$img?原圖
*?@param?string?$outFile?另存文件名
*?@param?string?$thumbWidth?縮略圖寬度
*?@param?string?$thumbHeight?縮略圖高度
*?@param?string?$thumbType?裁切圖片的方式
*?1?固定寬度??高度自增?2固定高度??寬度自增?3固定寬度??高度裁切
*?4?固定高度?寬度裁切?5縮放最大邊?原圖不裁切?6縮略圖尺寸不變,自動(dòng)裁切最大邊
*?@return?bool|string
*/
public?function?thumb($img,?$outFile?=?'',?$thumbWidth?=?'',?$thumbHeight?=?'',?$thumbType?=?''){
if?(!$this-check($img))?{
return?false;
}
//基礎(chǔ)配置
$thumbType?=?$thumbType???$thumbType?:?$this-thumbType;
$thumbWidth?=?$thumbWidth???$thumbWidth?:?$this-thumbWidth;
$thumbHeight?=?$thumbHeight???$thumbHeight?:?$this-thumbHeight;
//獲得圖像信息
$imgInfo?=?getimagesize($img);
$imgWidth?=?$imgInfo?[0];
$imgHeight?=?$imgInfo?[1];
$imgType?=?image_type_to_extension($imgInfo?[2]);
//獲得相關(guān)尺寸
$thumb_size?=?$this-thumbSize($imgWidth,?$imgHeight,?$thumbWidth,?$thumbHeight,?$thumbType);
//原始圖像資源
$func?=?"imagecreatefrom"?.?substr($imgType,?1);
$resImg?=?$func($img);
//縮略圖的資源
if?($imgType?==?'.gif')?{
$res_thumb?=?imagecreate($thumb_size?[0],?$thumb_size?[1]);
$color?=?imagecolorallocate($res_thumb,?255,?0,?0);
}?else?{
$res_thumb?=?imagecreatetruecolor($thumb_size?[0],?$thumb_size?[1]);
imagealphablending($res_thumb,?false);?//關(guān)閉混色
imagesavealpha($res_thumb,?true);?//儲(chǔ)存透明通道
}
//繪制縮略圖X
if?(function_exists("imagecopyresampled"))?{
imagecopyresampled($res_thumb,?$resImg,?0,?0,?0,?0,?$thumb_size?[0],?$thumb_size?[1],?$thumb_size?[2],?$thumb_size?[3]);
}?else?{
imagecopyresized($res_thumb,?$resImg,?0,?0,?0,?0,?$thumb_size?[0],?$thumb_size?[1],?$thumb_size?[2],?$thumb_size?[3]);
}
//處理透明色
if?($imgType?==?'.gif')?{
imagecolortransparent($res_thumb,?$color);
}
//配置輸出文件名
$imgInfo?=?pathinfo($img);
$outFile?=?$outFile???$outFile?:dirname($img).'/'.?$this-thumbPreFix?.?$imgInfo['filename']?.?$this-thumbEndFix?.?"."?.?$imgInfo['extension'];
Files::create(dirname($outFile));
$func?=?"image"?.?substr($imgType,?1);
$func($res_thumb,?$outFile);
if?(isset($resImg))
imagedestroy($resImg);
if?(isset($res_thumb))
imagedestroy($res_thumb);
return?$outFile;
}
}
首先,可以使用微信公眾平臺(tái)的內(nèi)容編輯器或其他的微信編輯器來(lái)編輯微信的內(nèi)容并發(fā)布;
其次,用dw制作的html5網(wǎng)頁(yè)要在微信公眾平臺(tái)上進(jìn)行上傳,可以通過(guò)第三方平臺(tái)進(jìn)行;
最后,如果不上傳,也可以考慮用微信平臺(tái)的鏈接實(shí)現(xiàn)對(duì)html5網(wǎng)頁(yè)的跳轉(zhuǎn)。
最后一種方法是最直接有效,而且基本上80%的微信平臺(tái)都是這樣使用的;
希望對(duì)你有所幫助!
1.1 分片、并發(fā)
分片與并發(fā)結(jié)合,將一個(gè)大文件分割成多塊,并發(fā)上傳,極大地提高大文件的上傳速度。
當(dāng)網(wǎng)絡(luò)問(wèn)題導(dǎo)致傳輸錯(cuò)誤時(shí),只需要重傳出錯(cuò)分片,而不是整個(gè)文件。另外分片傳輸能夠更加實(shí)時(shí)的跟蹤上傳進(jìn)度。
1.2 預(yù)覽、壓縮
支持常用圖片格式j(luò)pg,jpeg,gif,bmp,png預(yù)覽與壓縮,節(jié)省網(wǎng)絡(luò)數(shù)據(jù)傳輸。
解析jpeg中的meta信息,對(duì)于各種orientation做了正確的處理,同時(shí)壓縮后上傳保留圖片的所有原始meta數(shù)據(jù)。
1.3 多途徑添加文件
支持文件多選,類型過(guò)濾,拖拽(文件文件夾),圖片粘貼功能。
粘貼功能主要體現(xiàn)在當(dāng)有圖片數(shù)據(jù)在剪切板中時(shí)(截屏工具如QQ(Ctrl + ALT + A), 網(wǎng)頁(yè)中右擊圖片點(diǎn)擊復(fù)制),Ctrl + V便可添加此圖片文件。
1.4 HTML5 FLASH
兼容主流瀏覽器,接口一致,實(shí)現(xiàn)了兩套運(yùn)行時(shí)支持,用戶無(wú)需關(guān)心內(nèi)部用了什么內(nèi)核。
同時(shí)Flash部分沒(méi)有做任何UI相關(guān)的工作,方便不關(guān)心flash的用戶擴(kuò)展和自定義業(yè)務(wù)需求。
1.5 MD5秒傳
當(dāng)文件體積大、量比較多時(shí),支持上傳前做文件md5值驗(yàn)證,一致則可直接跳過(guò)。
如果服務(wù)端與前端統(tǒng)一修改算法,取段md5,可大大提升驗(yàn)證性能,耗時(shí)在20ms左右。
1.6 易擴(kuò)展、可拆分
采用可拆分機(jī)制, 將各個(gè)功能獨(dú)立成了小組件,可自由搭配。
采用AMD規(guī)范組織代碼,清晰明了,方便高級(jí)玩家擴(kuò)展。
2、引入資源
2.1 下載包內(nèi)容
├── Uploader.swf // SWF文件,當(dāng)使用Flash運(yùn)行時(shí)需要引入。
├── webuploader.js // 完全版本。
├── webuploader.min.js // min版本
├── webuploader.flashonly.js // 只有Flash實(shí)現(xiàn)的版本。
├── webuploader.flashonly.min.js // min版本
├── webuploader.html5only.js // 只有Html5實(shí)現(xiàn)的版本。
├── webuploader.html5only.min.js // min版本
├── webuploader.withoutimage.js // 去除圖片處理的版本,包括HTML5和FLASH.
└── webuploader.withoutimage.min.js // min版本
2.2 或者直接使用由staticfile提供的cdn版本,或者下載Git項(xiàng)目包。
// SWF文件,當(dāng)使用Flash運(yùn)行時(shí)需要引入。
├──
// 完全版本。
├──
├──
// 只有Flash實(shí)現(xiàn)的版本。
├──
├──
// 只有Html5實(shí)現(xiàn)的版本。
├──
├──
// 去除圖片處理的版本,包括HTML5和FLASH.
├──
└──
2.3 DIY打包
WebUploader文件打包借助了Grunt工具來(lái)實(shí)現(xiàn)
2.3.1 環(huán)境依賴
1.git命令行工具
2.node npm命令行工具
3.grunt (npm install grunt-cli -g)
2.3.2 編譯代碼
1.克隆 webuploader git倉(cāng)庫(kù),git clone 。
2.安裝node依賴,npm install。
3.執(zhí)行g(shù)runt dist,此動(dòng)作會(huì)在dist目錄下面創(chuàng)建合并版本的js, 包括通過(guò)uglify壓縮的min版本。
2.3.3 配置
打開(kāi)webuploader倉(cāng)庫(kù)根目錄下面的Gruntfile.js文件, 代碼合并有buildtask來(lái)完成。找到build配置項(xiàng)。
Gruntfile.js已經(jīng)配置了一個(gè)自定義合并的demo. 打包只支持HTML5的版本
// 自己配置的實(shí)例
// glob語(yǔ)法。
custom: {
preset: "custom",
cwd: "src",
src: [
'widgets/**/*.js',
'runtime/html5/**/*.js' ],
dest: "dist/webuploader.custom.js"
}
3、angular指令——web-uploader
3.1 指令功能
添加一個(gè)上傳文件按鈕,可以自行配置上傳文件的類型和過(guò)濾規(guī)則,且在彈出的模態(tài)框中進(jìn)行操作,支持連續(xù)上傳,分類選擇上傳
3.2 使用說(shuō)明
這里只是使用說(shuō)明,可能會(huì)加一些注意事項(xiàng),具體參數(shù)或者變量說(shuō)明請(qǐng)參看后面
3.2.1 頁(yè)面添加一個(gè)指令
web-uploader class="btn btn-info" type="image" accept="accept"uploader/web-uploader
3.2.2 配置上傳類型和過(guò)濾規(guī)則
上傳類型
type有四種類型,分別為
image:圖片
video:音視頻
flash:flash
file:辦公文檔,壓縮文件等等
過(guò)濾規(guī)則
accept有四個(gè)對(duì)象屬性,屬性中包含標(biāo)題、允許文件后綴、允許的mimetype
3.2.3 指令中綁定彈出模態(tài)框的事件
web-uploader這個(gè)指令中其實(shí)只做了一件事,給元素本身綁定彈出模態(tài)框的事件,具體上傳文件是在模態(tài)框中完成的
3.2.4 初始化uploader類,配置相關(guān)屬性
在模態(tài)框控制器中用到了$timeout
$timeout(function(){
//這里是上傳配置代碼
},0)
因?yàn)榕渲胾ploader時(shí)需要事先準(zhǔn)備好dom元素,angular打開(kāi)模態(tài)框是異步而JavaScript是單線程,所以實(shí)際上在執(zhí)行模態(tài)框控制器中的代碼時(shí),模態(tài)框并沒(méi)有打開(kāi),也就是dom并沒(méi)有加載完成,這會(huì)導(dǎo)致WebUploader報(bào)a.runningtime is not a function...的錯(cuò)誤
3.3 指令詳細(xì)說(shuō)明
3.3.1 父級(jí)controller中的配置
.controller('myCtrl',['$scope', '$modal', function($scope, $modal){
//配置允許上傳的類型 圖片/音視頻/flash/文件
$scope.accept = {
//圖片
image: {
title : 'Images',//標(biāo)題
extensions : 'gif,jpg,jpeg,bmp,png,ico',//允許上傳文件的后綴
mimeTypes : 'image/*'//允許的mimetype
},
//音視頻
video: {
title : 'Videos',
extensions : 'wmv,asf,asx,rm,rmvb,ram,avi,mpg,dat,mp4,mpeg,divx,m4v,mov,qt,flv,f4v,mp3,wav,aac,m4a,wma,ra,3gp,3g2,dv,vob,mkv,ts',
mimeTypes : 'video/*,audio/*'
},
//flash
flash: {
title : 'Flashs',
extensions : 'swf,fla',
mimeTypes : 'application/x-shockwave-flash'
},
//辦公文檔,壓縮文件等等
file: {
title : 'Files',
extensions : 'zip,rar,ppt,pptx,doc,docx,xls,xlsx,pdf',
mimeTypes : 'application/zip,application/x-rar-compressed,application/vnd.ms-powerpoint,application/vnd.openxmlformats- officedocument.presentationml.presentation,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms- excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/pdf'
}
};
}])
3.3.2 指令web-uploader
.directive('webUploader', ['$modal', function($modal){
return{
restrict: 'AE',
scope: {
accept: '=accept'
},
link: function($scope, $element, $attr){
$element.bind('click',function(){
var modalInstance = $modal.open({
controller: 'modalCtrl',
templateUrl: 'template/webuploader.tpl.html',
size:'lg',
resolve: {
items: function(){
return {
accept: $scope.accept,
type: $attr.type
};
}
}
});
modalInstance.result.then(function(returnStatus){
console.log(returnStatus);
},function(){
console.log('Modal dismissed at: ' + new Date());
});
});
}
};
}]);
你好 HTML5和javascript是不能壓縮視頻的,只能把視頻傳到服務(wù)器端,由后端來(lái)壓縮視頻,也不能控制相機(jī)的拍攝質(zhì)量,除非你用JAVA寫(xiě)Android客戶端才可以壓縮。希望我的回答能夠幫助到你,如果還有什么疑問(wèn)可以繼續(xù)追問(wèn)。