主要用了兩個html5的 API,一個file,一個canvas,壓縮主要使用cnavas做的,file是讀取文件,之後把壓縮好的照片放入內存,最後內存轉入表單下img.src,隨著表單提交。
照片是自己用單反拍的,5M多,壓縮下面3張分別是600多kb,400多kb,300kb的最後那張失真度很大了,壓縮效率蠻高的。
<!DOCTYPE html>
<html><head> <meta charset="utf-8"/> <title>File API Test</title> <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="js/JIC.js"></script> <style> #test{ display: none; } </style></head><body><input type="file" id="fileImg" ><form> <img src="" id="test" alt=""></form><script> function handleFileSelect (evt) { // var filebtn = document.getElementById(id); // console.log(filebtn); // var files = filebtn.target.files; // console.log(filebtn.target); // console.log(files); var files = evt.target.files; for (var i = 0, f; f = files[i]; i++) { // Only process image files. if (!f.type.match('image.*')) { continue; } var reader = new FileReader(); // Closure to capture the file information. reader.onload = (function(theFile) { return function(e) { // Render thumbnail. // console.log(evt.target.files[0]); // console.log(e.target); console.log(e.target.result); var i = document.getElementById("test"); i.src = event.target.result; console.log($(i).width()); console.log($(i).height()); $(i).css('width',$(i).width()/10+'px'); //$(i).css('height',$(i).height()/10+'px'); console.log($(i).width()); console.log($(i).height()); var quality = 50; i.src = jic.compress(i,quality).src; console.log(i.src); i.style.display = "block"; }; })(f); // Read in the image file as a data URL. reader.readAsDataURL(f); } } document.getElementById('fileImg').addEventListener('change', handleFileSelect, false);</script></body></html>
var jic = { /** * Receives an Image Object (can be JPG OR PNG) and returns a new Image Object compressed * @param {Image} source_img_obj The source Image Object * @param {Integer} quality The output quality of Image Object * @return {Image} result_image_obj The compressed Image Object */ compress: function(source_img_obj, quality, output_format){ var mime_type = "image/jpeg"; if(output_format!=undefined && output_format=="png"){ mime_type = "image/png"; } var cvs = document.createElement('canvas'); //naturalWidth真實圖片的寬度 cvs.width = source_img_obj.naturalWidth; cvs.height = source_img_obj.naturalHeight; var ctx = cvs.getContext("2d").drawImage(source_img_obj, 0, 0); var newImageData = cvs.toDataURL(mime_type, quality/100); var result_image_obj = new Image(); result_image_obj.src = newImageData; return result_image_obj; }, function ****(***)
2. 怎樣壓縮圖片
方法①
1
如果你的圖片格式是PNG格式的,而且對圖片質量要求不高,可以使用下面的方法來壓縮圖片大小。
2
右鍵單擊文件選項,將PNG圖像文件用系統自帶的畫圖板功能打開。
3
然後點擊圖片中所示的按鈕進行設置,從新保存文件。選擇「另存為」。
4
然後我們將保存格式選擇為「JPEG圖片」,當然根據你的需要,其他個是也可以,只不過我覺得JPEG不會使圖片質量弄得損耗過大,並且占空間很小,無疑是最好的方式
5
最後填寫完名稱,保存即可,我們就會發現圖片的空間比以前小了很多很多。 原來是9.01MB,一下子就變成了1.90MB。
END
方法②
1
此方法是針對已經是JPEG格式的圖片,還可以進一步減小其所佔的空間,那就是用壓縮軟體,我們的電腦一般都有的,如果沒有可以先安裝,看好,圖片的大小是1.90MB
2
然後右鍵打開文件選擇列表,選擇「添加到壓縮文件夾」
3
然後選擇壓縮方式,並進行確認。
4
等待壓縮軟體壓縮完成……
5
最後,我們將源文件和壓縮文件進行對比,你會發現效果沒有剛才明顯,但是也是很不錯的,趕緊嘗試一下吧!(這種方法不太適合JPG格式的壓縮圖片,PNG格式的效果比較明顯,不過用壓縮文件來進行整理可以是我們更好地上傳照片。)
3. 怎樣把50M的圖片壓縮成5M以內,以便上傳
樓主你好,要實現這個目的,我們可以通過改變圖片格式或者調整圖片大小及更改解析度來達到,我的數碼相片都是這樣來實現的,我用的是ACDsee9.0的正版,所以也積累了一些使用經驗,我的文章也被ACD官方轉載到官方論壇上。
1、這里我們以ACDSee7.0簡體中文版批量轉換圖片格式和調整圖片大小視頻來生動直觀的解釋一下怎樣實現:
http://tech.163.com/special/00091LS4/schoolwekkly051.html
2、這是我給你做的截圖,通過觀看視頻和看圖片演示,我相信這是一次一站式的旅途,你不但可以實現你的目的,同時還學到了一些有用的知識:
http://hi..com/%CE%D2%BC%D2%B5%C4%D0%A1%BB%A8%C3%A8/album/%D4%DAacdsee9.0%D6%D0%D4%F5%D1%F9%B5%F7%D5%FB%CD%BC%C6%AC%B4%F3%D0%A1
祝你好運吧!
4. 怎麼進行網站圖片壓縮優化的具體方法
對網站進行圖片壓縮優化具體操作步驟:
1、將下載下來的圖片放入PS中,
2、點擊菜單欄:文件
3、選擇:存儲為Web和設備所用格式,如圖
5、點擊下方:存儲,選擇需要存儲的地方,就可以保存一個適合於網站的圖片了。
想要圖片更好的被搜索引擎抓取收錄,圖片大小的模式要按照121*75px比例,還需要對圖片代碼標簽進行填寫(alt為圖片標簽,寫作規范是:alt="描述該圖片")
5. 怎樣壓縮單張圖片
圖片壓縮工具
偶向大家嚴重介紹 Magic Converter (鼓掌...)
它可以很方便的把很大的圖片變小 1般可以縮小為1/10
還支持圖片格式轉換
裝好軟體後 右鍵指定的圖片→魔法轉換→優化
「平滑」 (效果同藝術照 邊緣模糊化 稜角多的圖建議用)
注意~!
「類型」 是要保存的類型 默認是GIF
還有別的選項 大家就自己研究吧 (...)
Magic Converter 下載地址
官方 http://www.keksoft.com
天空 http://www1.skycn.com/soft/3265.html
注冊名:yyxk[TFW]
注冊碼: (網上收集)
介紹3種不錯的圖片壓縮工具。
Ulead SmartSaver Pro
http://www.holdsoft.com/Soft/txtx/txcl/200506/72311.htm
單打獨斗——分類壓縮
Ulead公司出品的Ulead SmartSaver Pro實在是一個很不錯的網頁圖形工具,尤其在圖片的減肥方面,它的功能強大而靈活,下面我就來詳細介紹一下它在圖片減肥方面的用法。
安裝了Ulead SmartSaver Pro之後,它會自動添加滑鼠右鍵的選項,這樣當你找到想要壓縮的圖形文件後,你只需選定該文件點擊右鍵,選擇「Ulead SmartSaver Pro」就可以快速運行該軟體並打開需要壓縮的圖形檔。
先以壓縮一張圖片為例,進入主窗口,點擊「Optimizer(優化)」就可以開始減肥工作了(如圖1)。窗口分為兩部分,左側為原圖,右側為壓縮後的新圖,並且在圖片上方分別標出了原圖、新圖的文件大小,未壓縮圖片的文件大小和預計網上下載時間等參數,幫助你從量上衡量圖形壓縮的程度。下方窗口的壓縮選項會根據所選擇的圖片格式而各不相同,你可以通過修改這些選項並及時地預覽右側壓縮後的效果來方便地控制壓縮的程度。
如果想壓縮後存成JPG格式,只要點擊3個按鈕中的「JPG」就可以了。周圍的各個選項的意義分別是:File type是指圖片是真彩色(True color)的還是灰度的(Grayscale);Preset中提供了4種預設模式,分別是50%和75%的改進質量、50%和75%的灰度質量;Soft是指柔化程度,因為在通常情況下JPG格式經過壓縮後,圖片都會出現不同程度的抖動,而適當的柔化可以使抖動的效果模糊一些,從而使圖片看起來更舒服一些,但如果柔化值設得太大,圖片就會變得一片模糊;Mode提供了「Prog-ressive(改進的)」、「Standard(基本的)」、「Standard Optimized(基本優化)」的三種模式。在Sudsampling中還提供了幾種插值運算的方式,這兩個選項都會因圖片的不同而產生不同的壓縮效果,在使用的過程中最好經常對比一下圖片上方的數據,靈活選擇;Quality就不必說了吧,圖片的質量與大小當然成正比了。
GIF應該是網頁中最常見的圖片格式了,如果要將圖片壓縮成這種格式的話,首先點擊「GIF」按鈕,File type包含了GIF所用的索引色Indexed和灰度Grayscale;Preset中預設的分別是優化的256、64、128色和灰度的256、64、128色;Soft仍然是柔化程度;選中「Dither」和「Interlace」可分別防止出現的抖動和抽線情況;Colors是GIF圖檔減肥的關鍵參數,在不影響觀看的情況下盡量減少顏色數,你會得到驚人的減肥效果;Weight決定顏色偏重於綠、藍、紅還是平均化;Palette中可選擇所用的色盤是Optimize(優化)、Browser Safe(瀏覽安全模式)還是User Defined(用戶自定),關於User Defined這個選項,如果你有自己經常用的一套色盤,你完全可以用右側色盤區域右下方的Save Palette As按鈕把它保存為pal格式,需要應用到其他圖形時,只要在Palette中選擇User Defined,載入保存的色盤文件就行了。此外,如果你已經有了自己固定的一套壓縮參數,你不妨利用Preset下拉菜單右側的Save按鈕將該方案保存為一種預設模式,以後就可以方便的從Preset中選擇了。
PNG格式雖然也被各種瀏覽器所支持,但得到的結果通常是使圖片增肥,在這里我們就不介紹了。
一蹴而就——批量壓縮
如果要壓縮成批的圖片,首先選擇「File」→「Batch Process」,會跳出如圖的對話框(如圖2)。「File」一項,主要是設定文件的導入導出的方式和路徑,在「Import source」中,By folder是壓縮整個目錄下的圖檔,勾選Include subf-older可包含子目錄里的文件,還可通過Image Types決定只壓縮該目錄下某幾種格式的圖片文件,By files是壓縮選定的文件,我們可以點擊「Select Files」按鈕,把需要壓縮的文件加入到列表中;選定了Auto batch process後,就可以自動將我們選定的圖片按設定方案壓縮並保存到原始目錄或指定的目錄中了。「Options」一項是對壓縮方案進行設定,Optimization實際上就是我們上面提到的Preset選項的集合,在這里選定存檔格式和壓縮程度;Slice是對圖片的剪裁,下面即將提到;Preprocessing是重新規定圖片的尺寸,默認保持原圖的寬高比(Keep aspect ratio),設定結束,按下回車,你就可以看到圖片被一張張地壓縮最後被保存到了指定目錄,是不是很方便?如果你選定的部分圖片壓縮標准與其他圖片不同,你也可以利用Batch Process,只是不要選定Auto batch process就行了,這樣按「確定」鍵後,SmartSaver會依次打開每張圖片,由你決定壓縮標准並存檔後,自動提問是否打開下一張圖片,選擇「Yes to All」,提問輝儷魷鄭�鬩部梢匝《ā癝witch to Auto Process mode」重新切換到自動壓縮。
化整為零——無縫拼接
有時為了追求整體布局的美觀,一些網友常在主頁上放一張大圖上去,並在上面做了許多鏈接,而這樣大的圖片自然會成為主頁瀏覽速度的「殺手」,它會使瀏覽者的耐心消耗殆盡,從而使你的主頁變得不受歡迎。SmartSaver為這種情況也提供了一套完美的解決方案,那就是把這張圖片按照你的要求剪裁成很多小塊並分別壓縮,每塊還可以鏈接不同的URL,有不同的注釋,最後生成一段HTML代碼,讓網頁的圖看起來還是一張大圖的效果(這可是FrontPage98很不容易才能實現的無縫拼接喲)。
怎樣才能實現呢?首先打開圖片,進入「Slicer」工作區,(如圖3)看到左邊工具條上像刻刀和橡皮的按鈕嗎?刻刀是用來剪裁圖片的工具,橡皮是用來去掉剪裁線的。點擊「Add Sliced Line」,拿起刻刀,在圖片上你計劃的位置橫豎幾刀將它分割,然後再換成箭頭的按鈕,編輯每一塊小圖的屬性,點選一塊區域,在下方的URL中填上鏈接的位置;Target是鏈接指向的窗口,參數的意思與HTML語法一樣,分別是開新窗口、副級窗口、同一窗口和頂端;Alt Text是圖片的注釋文字;Optimizer與上面提到的一樣,決定壓縮的程度。存檔後,我們就得到了需要的網頁。如果你想把這些圖插入別的網頁,你只需按下上面工具條中有HTML字樣的按鈕就能拷貝這段源代碼,然後再粘貼到相應的網頁中就行了。
Advanced GIF Optimizer
http://www.zdnet.com.cn/download/windows/business/swinfo/0,2008004949,39040826s,00.htm
其實,Advanced GIF Optimizer的用法是根本沒有必要講解,因為它的使用實在是太簡單了(只有7個按鈕)。(如圖4)但是當我發現那些用SmartSaver壓過的圖片竟然還能被它壓縮掉2%—28%的時候,我覺得還是有必要向大家介紹一下這個簡易而又強大的工具。
Advanced GIF Optimizer主窗口分為3部分:通過左側可以瀏覽文件結構,找到需要壓縮的圖片所在的目錄;右側用來預覽選定的圖檔;中間則可以看到詳細的壓縮信息——文件名、大小、壓縮後的大小、壓縮量。你所要做的只是選定所要壓縮的圖片目錄,點擊「Optimize」,該軟體就會自動按照它的壓縮方式壓縮目錄下的所有GIF圖檔,最後覆蓋源文件,就是這么簡單!不過最好在Optimize之前,用「Test」測試一下,注意一下Rection(壓縮量)這一項,因為有時它可能是個負數啊。
X』SqueezeMe!
http://www.yestamp.net/soft/soft.asp?id=6972
X'SqueezeMe!是專門處理JPG圖片的壓縮工具,在JPG的壓縮方面另有一些獨特的功能。進入主窗口,(如圖5)左側是用來檢索原圖的Source窗口,右側是選擇目標路徑的Destination窗口,選上該窗口內的Link後,目標路徑會自動改為與原圖相同的目錄下。同SmartSaver一樣,X'SqueezeMe!也提供了一個Preview窗口來對比原圖和新圖的壓縮質量,右側新圖下方的幾行數字表明了新圖的大小,如果有壓縮量,數字會是藍色;如果是紅色,則圖片變得反倒比原來大了。
右邊有一排選項的Action菜單是我們為JPG圖檔減肥的關鍵,所以為大家詳細列出各項用法:
Jpeg:Quality圖片質量和Smoothing柔化程度在SmartSaver的用法中已介紹過,需要提醒的是,在我們做完修改後,該軟體默認狀態是不會像SmartSaver那樣自動讓你預覽新圖效果的,所以一定選上Process按鈕右側的「Auto」,這樣我們在改變壓縮選項後就可以立刻預覽新圖效果了;
Flip:Flip有左右反轉和上下反轉的效果,Rotate可使圖片向左(右)旋轉90、180、270度;
Size:重新調整圖片的大小,可以變為原圖的X%,也可以添入一個200×200這樣的量化數字,但為了保持原圖的寬高比,別忘了勾選「Up」和「Down」兩項;
Color:可以把圖片做灰度、反相處理,還可以減弱或加重紅、綠、藍三色的比重;
Mark:在圖片上加上文字或圖形的標志,以「Add Text Watermark」(加文字水印)為例,選上該項後會自動彈出一個對話框,在「Text to be added」中添上需要加入的文字,選擇「Placement」中的一個方塊(對應文字在圖片上的相應位置)和「Shadow」項(對應陰影相對於文字的位置)以及各自的顏色和橫向縱向位移,按下「Accept」,我們的文字水印便加在了該圖片上;
Misc:一些雜項,分別為縮略圖命名(圖名前加「thn_」)、壓縮後提供詳細的報告、更新HTML代碼、載入瀏覽器;
Batch:批量壓縮,「Discard threshold-90%」表示新圖的大小至少要是原圖的90%,否則壓縮結果不被保存,這樣你可以調整壓縮比後再對這些圖片進行壓縮,從而使整批的圖片都達到理想的壓縮效果。
6. php、HTML5上傳圖片自動壓縮問題
給你個圖片處理的類吧,圖片剪裁處理後,也就等於將圖片壓縮了。
/**
*圖像處理類
*============================================================================
*Copyright2014大秦科技,並保留所有權利。
*網站地址:http://www.qintech.net;
*============================================================================
*/
classImage{
//生成縮略圖的方式
public$thumbType;
//縮略圖的寬度
public$thumbWidth;
//縮略圖的高度
public$thumbHeight;
//生成縮略圖文件名後綴
public$thumbEndFix;
//縮略圖文件前綴
public$thumbPreFix;
/**
*構造函數
*/
publicfunction__construct(){
$this->thumbType=1;
$this->thumbWidth=120;
$this->thumbHeight=60;
$this->thumbPreFix='';
$this->thumbEndFix='_thumb';
}
/**
*檢測是否為圖像文件
*@param$img圖像
*@returnbool
*/
privatefunctioncheck($img){
$type=array(".jpg",".jpeg",".png",".gif");
$imgType=strtolower(strrchr($img,'.'));
returnextension_loaded('gd')&&file_exists($img)&&in_array($imgType,$type);
}
/**
*獲得縮略圖的尺寸信息
*@param$imgWidth原圖寬度
*@param$imgHeight原圖高度
*@param$thumbWidth縮略圖寬度
*@param$thumbHeight縮略圖的高度
*@param$thumbType處理方式
*1固定寬度高度自增2固定高度寬度自增3固定寬度高度裁切
*4固定高度寬度裁切5縮放最大邊原圖不裁切
*@returnmixed
*/
privatefunctionthumbSize($imgWidth,$imgHeight,$thumbWidth,$thumbHeight,$thumbType){
//初始化縮略圖尺寸
$w=$thumbWidth;
$h=$thumbHeight;
//初始化原圖尺寸
$cuthumbWidth=$imgWidth;
$cuthumbHeight=$imgHeight;
switch($thumbType){
case1:
//固定寬度高度自增
$h=$thumbWidth/$imgWidth*$imgHeight;
break;
case2:
//固定高度寬度自增
$w=$thumbHeight/$imgHeight*$imgWidth;
break;
case3:
//固定寬度高度裁切
$cuthumbHeight=$imgWidth/$thumbWidth*$thumbHeight;
break;
case4:
//固定高度寬度裁切
$cuthumbWidth=$imgHeight/$thumbHeight*$thumbWidth;
break;
case5:
//縮放最大邊原圖不裁切
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:
//縮略圖尺寸不變,自動裁切圖片
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原圖
*@paramstring$outFile另存文件名
*@paramstring$thumbWidth縮略圖寬度
*@paramstring$thumbHeight縮略圖高度
*@paramstring$thumbType裁切圖片的方式
*1固定寬度高度自增2固定高度寬度自增3固定寬度高度裁切
*4固定高度寬度裁切5縮放最大邊原圖不裁切6縮略圖尺寸不變,自動裁切最大邊
*@returnbool|string
*/
publicfunctionthumb($img,$outFile='',$thumbWidth='',$thumbHeight='',$thumbType=''){
if(!$this->check($img)){
returnfalse;
}
//基礎配置
$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]);
//獲得相關尺寸
$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);//關閉混色
imagesavealpha($res_thumb,true);//儲存透明通道
}
//繪制縮略圖X
if(function_exists("imageresampled")){
imageresampled($res_thumb,$resImg,0,0,0,0,$thumb_size[0],$thumb_size[1],$thumb_size[2],$thumb_size[3]);
}else{
imageresized($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;
}
}
7. 前端把圖片壓縮轉換成base64編碼把值賜予input='hidden' 之後提交給後台. HTML5,PHP,Javascript,canvas
缺點你無法直接驗證傳來的base64數據的完整性,比如大小,文件頭之類的,還需要自己來實現。
8. html/css 網頁背景圖片,如何自適應寬度,長度不壓縮 div如何半透明詳解
<style type="text/css">
<!--
body {
background-image: url(」圖片地址「);
background-repeat: repeat-x;
}
#div1 { margin:0px auto; width:500px; height:370px ; text-align:center; background:url(/jscss/demoimg/wall3.jpg);}
#div2 { height:330px; filter:alpha(Opacity=80);-moz-opacity:0.5;opacity: 0.5;z-index:100; background-color:#ffffff; }
-->
</style>
橫向平鋪背景。
div透明度,繼續參考下面代碼
<div id="div1">
<div style="padding:20px;"><div id="div2">這里是透明的DIV</div></div>
</div>
9. html5怎麼壓縮圖片
利用canvas的drawImage方法來繪制圖片,並且設置繪制的圖片的width跟height,最後再通過canvas的toDataURL方法來生成壓縮後的dataUR
下面直接上代碼:
html:
[html]view plain
<divclass="head_imgpr">
<emclass="pa"></em>
<imgsrc='../images/icon_touxiang.png'alt=""class="modify_img"/>
<inputid="photo"type="file"accept="image/*"/>
</div>