㈠ 解壓縮文件密碼
我也這樣的強礦,WINRAR的加密技術做的非常好,基本上長一點的密碼就很難破解。樓主你是不是壓縮了兩次?壓縮了兩次的話密碼就不管用了。還有就是壓縮的時候輸錯了而你沒注意。
㈡ 求助WIN7使用caps lock鍵延時的問題!
windows7的最大優點就是集成很多的驅動,而且很多東西都是可以使用的。但是,任何事情都是雙刃劍,有利有弊的。這個優點的缺點就是驅動和壓縮包太多了,導致互相沖突……好了,後面不用說了,你懂的!
不知道你的本本是什麼牌子,但是最起碼肯定是鍵位的設置和windows7的驅動壓縮沖突了。解決方法,你到網上找到簡化純凈版的系統,重新安裝。你的煩惱馬上就沒有了。
很簡單,不用很多字就能說明,希望能幫到你。謝謝
㈢ PS常用的圖像類型有哪些(至少四種)
1、PSD 格式是Photshop軟體的專用格式,能支持網路,通道,路徑,剪貼路徑和圖層等所有Photoshop的功能,還能支持Photoshop使用的任何顏色深度和圖像模式。
(3)caps壓縮擴展閱讀:
文件操作使用快捷鍵
新建圖形文件: 【Ctrl】+【N】 默認設置創建新文件 :【Ctrl】+【Alt】+【N】
打開已有的圖像: 【Ctrl】+【O】 打開為:【Ctrl】+【Alt】+【O】
新建圖層:【Ctrl】+【Shift】+【N】 另存為 :【Ctrl】+【Shift】+【S】
關閉當前圖像 :【Ctrl】+【W】 顯示的「預置」對話框 :【Alt】+【Ctrl】+【K】
存儲副本 :【Ctrl】+【Alt】+【S】 保存當前圖像 :【Ctrl】+【S】
應用當前所選效果並使參數可調 :【A】 頁面設置【Ctrl】+【Shift】+【P】
打開預置對話框 :【Ctrl】+【K】 設置透明區域與色域 :【Ctrl】+【4】
設置「常規」選項: 【Ctrl】+【1】 設置參考線與網格 :【Ctrl】+【6】
列印 :【Ctrl】+【P】 設置存儲文件:【Ctrl】+【2】
設置顯示和游標 :【Ctrl】+【3】 斜面和浮雕效果:【Ctrl】+【5】
內發光效果 :【Ctrl】+【4】 外發光效果: 【Ctrl】+【3】
設置單位與標尺 :【Ctrl】+【5】 通道選擇【ctrl+1.2.3.4】
圖像調整使用快捷鍵
自由變換:【ctrl】+【T】 再次變換:【Ctrl】+【Shift】+【Alt】+【T】
圖像大小:【Ctrl】+【Alt】+【I】 色階:【Ctrl】+【L】
畫布大小:【Ctrl】+【Alt】+【C】 色相/飽和度:【Ctrl】+【U】
曲線:【Ctrl】+【M】 黑白:【Alt】+【Shift】+【Ctrl】+【B】
去色:【Shift】+【Ctrl】+【U】 反相:【Ctrl】+【I】
色彩平衡:【Ctrl】+【B】
編輯文字使用快捷鍵
移動圖像的文字:【Ctrl】 + 選中文字 選擇文字時顯示/隱藏:【Ctrl】 + 【H】
選擇從插入點到滑鼠點的文字:【向上鍵】+ 點擊滑鼠 使用/不使用下劃線: 【向上鍵】+ 【Ctrl】 +【 U】
使用/不使用中間線:【向上鍵】+ 【Ctrl】 +【 /】 使用/不使用大寫英文:【向上鍵】+【 Ctrl】 +【 K】
使用/不使用Caps:【向上鍵】+【Ctrl】 +【 H】
圖層操作使用快捷鍵
正常 :【Shift】+【Alt】+【N】 正片疊底: 【Shift】+【Alt】+【M】
循環選擇混合模式 :【Shift】+【-】或【+】 溶解 :【Shift】+【Alt】+【I】
顏色減淡 :【Shift】+【Alt】+【D】 閾值(點陣圖模式):【Shift】+【Alt】+【L】
背後 :【Shift】+【Alt】+【Q】 顏色加深 :【Shift】+【Alt】+【B】
強行關閉當前話框:【Ctrl】+【Alt】+【W】 清除 :【Shift】+【Alt】+【R】
飽和度: 【Shift】+【Alt】+【T】 無限返回上一步:【Ctrl】+【Alt】+【Z】
屏幕: 【Shift】+【Alt】+【S】 重新選擇:【Ctrl】+【Shift】+【D】
修改字距:【Alt】+【←/→】 疊加: 【Shift】+【Alt】+【O】
變亮:【Shift】+【Alt】+【G】 修改行距:【Alt】+【↑/↓】
柔光: 【Shift】+【Alt】+【F】 差值: 【Shift】+【Alt】+【E】
粘貼:【Ctrl】+【Alt】+【V】 強光:【Shift】+【Alt】+【H】
排除:【Shift】+【Alt】+【X】 全部選取:【Ctrl】+【A】
變暗: 【Shift】+【Alt】+【K】 色相: 【Shift】+【Alt】+【U】
路徑變選區 數字鍵盤的:【Enter】 變亮:【Shift】+【Alt】+【G】
顏色: 【Shift】+【Alt】+【C】 羽化選擇:【Ctrl】+【Alt】+【D】
光度: 【Shift】+【Alt】+【Y】 復制當前圖層:【Ctrl】+【J】
載入選區: 【Ctrl】+點按圖層、路徑 取消選擇:【Ctrl】+【D】
反向選擇:【Ctrl】+【Shift】+【I】
參考資料來源:網路-PS
㈣ 如何破解壓縮文件密碼
工具材料
arpr破解版軟體
方法如下
1、首先在電腦下載安裝「arpr破解版」軟體,然後打開軟體。
㈤ 實況足球8去哪下
http://www.hellobbs.cn/download/game/
實況足球8國際中文解說版.exe
這個地址用迅雷下,解壓密碼taizeigg,你自己應該會安裝吧!!!
如果進去被彈出用這個辦法就好:
打開3D-ANALYZE1.69
點擊第二個SELECT選擇你的實況8安裝目錄里的WE8.EXE
在右邊的選項force
SW
TnL及emulate
HW
TnL
caps和emulate
other
DX8.1
caps打上勾勾!
最後點下邊的RUN就可以了!
解壓密碼是taizeigg
如果這樣還不能玩,那就說明是你電腦的問題了,而不是游戲程序的問題了
!
㈥ 求WORD使用指南
一、 基礎知識
1、概述:
WORD 是一個文字處理軟體,主要用於文字的編輯與排版,是OFFICE辦公軟體包中的其中一個最適用的辦公軟體之一。
2、動與退出:
啟動:雙擊桌面上的WORD 圖標(或點擊「開始」菜單——指向「程序」——點擊「WORD 」圖標)
退出:點擊「文件」菜單點擊「退出」(或單點擊WORD窗口標題欄最右端的「關閉」按鈕)
3、 界面(即窗口)組成:
(1)標題欄:圖標,名稱,最小化,最大化/還原,關閉按鈕
(2)菜單欄:WORD的所有操作都可用菜單命令實現
(3)工具欄:包括常用工具欄和格式工具欄(默認為放在菜單欄的下面)
A工具移動:把滑鼠放在工具欄的最左邊會出現移動符號,按住滑鼠左鍵移動到所需位置再松開滑鼠即可。
B工具變形:當工具欄放在文本區內時,把滑鼠放在工具欄的最邊界處會出現調整符號,按住滑鼠左鍵順著箭頭的方向移動即可。
C顯示/隱藏工具欄:點擊「視圖」菜單——點擊「工具欄」——選擇所需的工具欄。
(4)文本區:(又稱為編輯區或工作窗口)用來輸入文本——編輯文檔及對象
(5)標 尺:包括水平標盡和垂直標尺(點擊「視圖」——「標尺」可顯示/隱藏標尺)
(6)滾動條:包括水平滾動條和垂直滾動條,用來查看未顯示的文本或對象
(7)狀態欄:顯示文本的一些相關信息
二、基本操作
1、文本的輸入:shift+ctrl:各種輸入法的轉換;ctrl+空格鍵:中文與英文輸入法的轉換;
(1)英文:注意大小寫字母轉換鍵Caps Lock
(2)漢字:在任務欄中轉換中文輸入法後輸入
(3)數字:利用數字鍵盤(先使Num Lock鍵燈亮)
(4)符號:
A鍵盤上的符號按shift+符號
B鍵盤上沒有的符號:點擊「插入」菜單—點擊「符號」—選擇所需的符號—點擊「插入」——點擊「關閉」即可。
C在「輸入法狀態條」的軟鍵盤上右單擊彈出的菜單中選擇所需的軟鍵盤,單擊所需的符號即可。
2、文本的選擇:
(1)連續多個字元:按左鍵從要選擇的第一個字元拖到最後一個字元;
(2)一行:游標移到待選一行的左邊空白處(即是頁邊距的外邊),當滑鼠指針變為指向右方箭頭時單擊;
(3)一段落:游標移到待選段落的左邊空白處,當滑鼠指針變為指向右方箭頭時按住滑鼠左鍵拖動即可;
(4)整篇文章:點擊「編緝」菜單——擊「全選」(也可按Ctrl+A快捷鍵)
3、文本的移動、復制與刪除:
(1)刪除文本:選擇文本後按鍵盤上的Delete鍵
(2)移動文本:
選擇文本——點擊「編輯」菜單——點擊「剪貼」(可直接點擊工具欄中的「剪貼」按鈕)——游標放目標位置——點擊「編輯」菜單——點擊「粘貼」 (可直接點擊工具欄中的「粘貼」按鈕)。(也可先選擇文本
後再按住左鍵拖放到目標位置)
(3)復制文本:
選擇文本——點擊「編輯」菜單——點擊「復制」 (也可直接點擊工具欄中的「復制」按鈕)——游標放目標位置——點擊「編輯」 ——點擊「粘貼」(也可直接點擊工具欄中的「粘貼」按鈕)。(也可選擇文本後按住Ctrl鍵再按住左鍵拖放到目標位置)
(4)撤消與恢復操作:
A撤消:作用是撤消上一步操作。點擊常用工具欄上的「撤消」按鈕。
B恢復:作用是恢復被撤消的操作。點擊常用工具欄上的「恢復「按鈕。
三、文件的操作
⑴新建文檔:單擊常用工具欄上的新建按鈕
⑵打開文檔:點擊「文件」菜單——點擊「打開」——選擇文件——點擊「打開」
⑶保存文檔:點擊「文件」菜單——點擊「保存」——在文件名上輸入要保存的文件名稱(可選擇保存位置)——點擊「保存」(第一次保存文件還可以用密碼保存文件,以防其他人修改或查看文件的內容)
⑷關閉文檔:點擊「文件」菜單——點擊「關閉」(或者按標題欄右側的「關閉」按鈕,如出現「是」「否」「取消」三個按鈕,「是」是要用戶保存該文檔後再退出,「否」則是對該文檔進行不保存而退出,「取消」則是不退出回到編輯狀態。)
⑸另存為:
用不同的文件名、位置或文件格式保存活動文件,還可以使用此命令對有密碼的文件進行修改密碼。
⑹文檔切換:單擊任務欄上的文檔名稱按鈕
四、頁面設置
方法 :單擊「文件」菜單——點擊「頁面設置」出現頁面設置對話框
1、「頁邊距」標簽可以設置上、下、左、右頁邊距;(也可以在頁面中採用水平與垂直標尺大概的設置)
2、「紙型」標簽可以選擇紙張大小和方向,設置好後單點擊「確定」便可。
五、列印預覽(查看文檔的最後編輯效果)
方法:單擊文件菜單——點擊列印預覽(或單擊常用工具欄的列印預覽按鈕)。在列印預覽中我們可以看到游標變成了放大鏡,在文檔中移動滑鼠單擊可以查看的上下左右,預覽完後單擊關閉按鈕關閉預覽窗口,回到頁面視圖中。
六、列印
單擊文件菜單——點擊列印(出現對話框)——設置好後點擊「確定」。
WORD第二課 文檔格式化
一、顯示比例:用來調整文檔的顯示比例
單擊「常用」工具欄上的「顯示比例」按鈕右邊的下拉箭頭,再選擇所需的顯示比例。
二、字元格式
★:Word可以先採用默認的格式進行文字的錄入,然後對默認的字元格式(先選擇)再進行更改至所需的格式;也可以先進行設置好所需的格式後,再進行字元的錄入。
1、利用格式工具欄
①改變字體:選擇文本——單擊字體框旁的下拉箭頭——選擇所需字體
②改變字元大小:選擇文本——單擊字體框旁的下拉箭頭——選擇所需字型大小
③加粗/傾斜文本:選擇文本——單擊格式工具欄中的「加粗/傾斜」按鈕
④給字元加下劃線:選擇文本——單擊下劃線按鈕旁的下拉箭頭——選擇下劃線類型以及顏色
⑤字元縮放:選擇文本——單擊字元縮放按鈕旁的下拉箭頭——選擇縮放比例
⑥給所選文本加默認邊框:選擇文本——單擊格式工具欄上的「符邊框」按鈕
⑦給所選文本加默認底紋:選擇文本——單擊格式工具欄中上的「字元底紋」按鈕
⑧改變字元顏色:選擇文本——單擊字體顏色按鈕旁的下拉箭頭——選擇所需顏色
2、利用字體對話框格式化:選擇文本——單擊「格式」菜單——點擊「字體」出現字體對話框
「字體」標簽:可設置字體、字型大小、字形、字元顏色、下劃線及字體效果等
「字元間距」標簽:可設置字元縮放、字元間距、字元位置
「文字效果」標簽可給文字增加動態修飾
技巧:選擇文本——右擊——點擊「字體」對話框
3、格式刷:位於「常用」工具,用於復制選定對象或文本格式,並將其應用到你所需的對象或文本中。
步驟:
(1)選擇原格式文本
(2)單擊「格式刷」
(3)選擇目標文本即可
★ :要將格式復制到多個項目上,可雙擊「格式刷」,然後選擇要改變的其格式的各個項目。完成操作後,按「Esc」取消鍵以關閉「格式刷」。
三、段落格式
1、利用水平標尺縮進段落文本
(1)首行縮進:
指段落的第一行往右縮進,其餘的行不變;(方法:游標放段落中,拖動水平標尺上的「首行縮進「按鈕)
(2)懸掛縮進:
指段落的第二行不變。其餘的往右縮進:(方法:游標放段落中,拖動水平標尺上的「懸掛縮進「按鈕
(3)左縮進:
整個段落往右縮進;(方法:游標放段落中,拖動水平標尺上的「左縮進」按鈕。)
(4)右縮進
整個段落往左縮進;(方法:游標放段落中,拖動水平標尺上的「右縮進」按鈕。)
2、利用格式工具欄對齊文本
在格式工具欄上有五種文本對齊方式(兩端對齊(即左對齊)、居中對齊、右對齊、分散對齊、)可以通過這四種對齊方法來對齊段落文本
3、利用段落對話框格式化段落
選擇段落——點擊「格式」菜單——點擊「段落」(出現段落對話框)——選擇「縮進與間距」標簽——根據需要進行設置——(可設置左、右縮進量;段前段後間距;行間距;首行縮進/懸掛縮進;文本的對齊方式)——點擊「確定」
★:文檔默認的行距為單倍行距。默認的段落的間距為0,也就是等到於行距。單倍行距,就是根據該行中最大字體 (一行中可能有多種字體)的高度加上其空餘的距離。空餘距離是根據該行最大的字體的大小決定的。字體大,其空餘的距高就小。該行的高度是根據這些因素自動調節的。當一行中有大號字體時或有上、下標時,能自動調整行距。
★:可以選擇的行距及其實際距離如下:
A、1.5倍行距:此行距是單倍行距的一倍半
B、2倍行距:是單倍行距的兩倍
C、多倍行距:按單倍會距的百分比增加或減少的行距。
D、最小值:所選用的行距僅能容納下文本中最大的字體或圖形
E、固定值:文本中的每一行均按此固定值設置,各行的間距相等。此固定值的行距應能容納行中最大字體和圖形。
四、邊框與底紋設置
1、給文本加邊框:選擇文本——點擊格式菜單——點擊邊框與底紋(出現對話框)選擇邊框標簽——根據需要選擇邊框類型、選擇類型、線條顏色、線條寬度及適用范圍——點擊確定。
2、給文本加底紋:選擇文本——點擊格式菜單——點擊邊框和底紋——選擇「底紋」標簽——選擇顏色及應用范圍——點擊確定。
3、給頁面加邊框:點擊「格式」菜單——點擊邊框和底紋——選擇頁面邊框標簽——選擇所需的邊框類型、線條顏色、線條大小等到或選擇藝術型邊框——點擊確定。
★:可點擊其中的「選項」按鈕設置度量依據為文字或為頁邊(默認的為頁邊)。
五、文字方向
更改文檔或表格單元格或文本框的文字方向
點擊「格式」菜單——點擊「文字方向」(彈出對話框)——設置好後點擊確定,也可以點擊常用工具欄的「文字方向」按鈕。
六、中文簡繁轉換
先選擇要轉換的文字,再點擊常用工具欄的「中文簡繁轉換」按鈕。
七、背景
這些背景除了水印外,其他的都不是為列印文檔設計的,只在Web版式視圖中顯示出來;頁面視圖是為了列印而設置的一種視圖格式。
點擊「格式 」菜單——「背景」——再單擊所需顏色,或單擊「其他顏色」命令,選擇其他顏色或自定義顏色。單擊「填充效果」命令可選擇特殊效果(如邊渡、紋理、圖案、圖片)。
八、分欄
1、將WORD文檔分成多個豎欄
設置分欄:選擇文本——點擊「格式」菜單——點擊「分欄」出現分欄對話框(根據需要選擇分欄設置,如需要豎線則選中分隔線復選框)——點擊確定
2、要將某個段落分成若干欄,可先選擇該段落,然後,再進行分欄的設置。
3、取消分欄:
游標放在已分欄的文本或段落中——點擊「格式」菜單——點擊「分欄」——在對話框中選擇—欄樣式——點擊確定。
★ :在水平標尺中可查看到分欄的欄數。
九、中文版式統一的步驟為先選擇文字,後單擊 「格式」菜單——「中文版式」——點擊所需的命令
1、「拼音指南」:能夠自動將漢字拼音標注在選定的中文文字上。
2、「帶圈字元」:為所選文字添加圈號也可取消帶圈字元的圈號。
3、「縱橫混排」:
將豎排文字中的半形字元向左旋轉90度進行顯示,以使其具有正確的方向,也可以將旋轉過的文字還原為原來的顯示方向。
4、「合並字元」:將多個字元(不超過6個)合並成一個整體,這些字元將被壓縮並排列為兩行。也可將已經合並的字元還原為普通字元
5、「雙行合一」:
將輸入的文字顯示為長度相等的上下兩行,其高度與一行正常文字相同,也可將具有雙行合格式的文字還原為普通文字。
Word第三課 表格處理
組成表格的三個層次是單元格——行/列——表格:創建表格之前首進先行頁面設置,其次點清所做表格的行數與列數,然後創建表格,再對表格進行編輯格式。
一、 創建表格
1、點擊常用工具欄上的「插入表格」按鈕,拖出所需要的行列數
2、單擊「表格」菜單——點擊「插入」——點擊「表格」——設置行/列數——點擊確定
二、表格的基本操作
1、表格的移動與調整大小:
(1)將滑鼠指針移動到表格範圍內時,在表格的左上角會出現一個移動控制點,此控制點有二個作用:一是用滑鼠拖動此移動控制點,即可隨意拖動表格;二是單擊該控制點可全選整個表格。
(2)將滑鼠指針移動到表格範圍內時,在表格的右下角會出現一個調整控制點,用滑鼠拖動此調整控制點,即可調整表格大小。
2、表格的選擇:
(1)單元格:
表格中的一個單元格,當游標放在單元格的左下角時會出現一個黑色的斜向上的箭頭,單擊即可。
(2)行/列
滑鼠移至行(列)的左側(上邊界)變成右(下)箭頭時單擊便可
(3)單元格區域:
由多個單元格組成的矩形區域:(方法:利用左鍵拖動選擇)
(4)整張表格:
游標放在表格內——單擊「表格」菜單——點擊「選定」——點擊表格。(或單擊表格左上角的移動控制符號)
3、調整行高與列寬
行高:把滑鼠放在表格的橫線上,出現一個符號和上下兩個箭頭時,按住滑鼠左鍵不放上下拖動,即可。
列寬:把滑鼠放在表格的豎線上,出現一個符號和上下兩個箭頭時,按住滑鼠左鍵不放上下拖動,即可。
4、一個或多個連續單元格的列寬修改:
先選定一個或多個單元格,把滑鼠放在表格的豎線上,出現一個雙豎線和左右兩個箭頭時,按住滑鼠左鍵不放上下拖動,即可。
5、刪除與插入表格、行、列、單元格:
刪除:游標放在所需要刪除的表格、行、列、單元格,點擊「表格」菜單——點擊「刪除」——選擇一個所需的命令單擊即可。
插入:點擊「表格」菜單——點擊「插入」——根據所需的命令單擊之即可。
6、拆分表格:
把游標放在所需拆分的行中,點擊「表格」——點擊「拆分表格」,游標所在的行即與上一行即拆分成兩個表格;如果要合並拆分後的表格,可把游標放在兩個表格的空隙之間的頁邊距外面單擊後,按 Delete鍵即可。
7、繪制斜線表頭:
把游標放在要繪制斜線的單元格,點擊「表格」——點擊「繪制斜線頭」——在彈出對話中按所需要設置。
㈦ 圖片的四種格式.jpg、.gif、.png、.bmp各是什麼意思
1、文件後輟名為".jpg"或".jpeg",是最常用的圖像文件格式,由一個軟體開發聯合會組織制定,是一種有損壓縮格式,能夠將圖像壓縮在很小的儲存空間,圖像中重復或不重要的資料會被丟失,因此容易造成圖像數據的損傷。
2、圖形交換格式(外語簡稱:GIF、外語全稱:GraphicsInterchangeFormat),是CompuServe公司在 1987年開發的圖像文件格式。
GIF文件的數據,是一種基於LZW演算法的連續色調的無損壓縮格式。其壓縮率一般在50%左右,它不屬於任何應用程序。幾乎所有相關軟體都支持它,公共領域有大量的軟體在使用GIF圖像文件。
3、攜帶型網路圖形(外語簡稱PNG、外語全稱:PortableNetworkGraphics),是網上接受的最新圖像文件格式。PNG能夠提供長度比GIF小30%的無損壓縮圖像文件。它同時提供 24位和48位真彩色圖像支持以及其他諸多技術性支持。
由於PNG非常新,所以並不是所有的程序都可以用它來存儲圖像文件,但Photoshop可以處理PNG圖像文件,也可以用PNG圖像文件格式存儲。
4、BMP 是(Windows點陣圖) Windows 點陣圖可以用任何顏色深度(從黑白到 24 位顏色)存儲單個光柵圖像。Windows 點陣圖文件格式與其他 Microsoft Windows 程序兼容。它不支持文件壓縮,也不適用於 Web 頁。
Windows 點陣圖文件格式的缺點超過了它的優點。為了保證照片圖像的質量,請使用 PNG 、JPEG、TIFF 文件。BMP 文件適用於 Windows 中的牆紙。
(7)caps壓縮擴展閱讀:
jpg格式的圖片轉換成tif圖片格式的方法:
1、首先在格式工廠軟體首頁的圖片下面點擊你要轉換的最終格式【TIF】。
㈧ 用什麼軟體或者方法可以壓縮AVI文件
這里我們講解怎樣用DirectShow來壓縮一個AVI文件。我們重點放到視頻壓縮,同樣的方法可以應用到音頻壓縮。
我們分以下幾步來講解:
1、 選擇一個壓縮過濾器
有許多種方法可以壓縮視頻或者音頻,比如:
a、 本地DirectShow過濾器
b、 視頻壓縮管理編碼器(VCM)
c、 音頻壓縮管理編碼器(ACM)
d、 DirectX媒體對象(DMOs)
在DirectShow中,VCM被AVI Compressor過濾器封裝了。同樣的,ACM編碼器也被ACM Wrapper過濾器封裝了。DMOs被DMO Wrapper過濾器封裝。系統設備枚舉器提供了一個統一的方法來枚舉和創建這些壓縮器,我們不用考慮底層的操作。
枚舉設備方法請參照前面的講述。這里我們只給出代碼:
void OnInitDialog(HWND hDlg)
{
HRESULT hr;
ICreateDevEnum *pSysDevEnum = NULL;
IEnumMoniker *pEnum = NULL;
IMoniker *pMoniker = NULL;
hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
CLSCTX_INPROC_SERVER, IID_ICreateDevEnum,
(void**)&pSysDevEnum);
hr = pSysDevEnum->CreateClassEnumerator(
CLSID_VideoCompressorCategory, &pEnum, 0);
while (S_OK == pEnum->Next(1, &pMoniker, NULL))
{
IPropertyBag *pPropBag = NULL;
pMoniker->BindToStorage(0, 0, IID_IPropertyBag,
(void **)&pPropBag);
VARIANT var;
VariantInit(&var);
hr = pPropBag->Read(L"FriendlyName", &var, 0);
if (SUCCEEDED(hr))
{
LRESULT iSel = AddString(GetDlgItem(hDlg,
IDC_CODEC_LIST), var.bstrVal);
}
VariantClear(&var);
pPropBag->Release();
pMoniker->Release();
}
SendDlgItemMessage(hDlg, IDC_CODEC_LIST,
LB_SETCURSEL, 0, 0);
pSysDevEnum->Release();
pEnum->Release();
}
創建一個過濾器的實例,調用IMoniker::BindToObject方法。方法會返回一個IBaseFilter介面指針。就象下面那樣:
IBaseFilter *pFilter = NULL;
hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter,
(void**)&pFilter);
if (SUCCEEDED(hr))
{
// 可以使用過濾器了
// 記著釋放IBaseFilter介面指針
}
2、 設置視頻壓縮屬性
視頻壓縮過濾器可以在它的輸出引腳支持IAMVideoCompression介面。使用這個介面可以設置壓縮的屬性,比如楨率,壓縮質量等待。
首先,調用IBaseFilter::EnumPins方法找到過濾器的輸出引腳,然後為介面查詢引腳。一些過濾器不是所有的介面都支持,也有的不支持某個壓縮屬性。為了決定支持的屬性能力,我們調用IAMVideoCompression::GetInfo來確定。這個方法返回一些信息:
a、 一個設置性能的標識
b、 一個描述字元串和版本字元串
c、 默認的楨速率,質量等參數
它按照下面的語法調用:
hr = pCompress->GetInfo(pszVersion, &cbVersion, pszDesc, &cbDesc,
&lKeyFrame, &lPFrame, &dblQuality, &lCap);
pszVersion和pszDesc參數是接收版本和描述字元串的寬字元緩沖區。cbVersion和cbDesc參數接收被請求的緩沖區大小。IkeyFrame,lPFrame和dblQuality參數獲得默認的楨速率,p楨率和質量。質量是用從0.0到1.0的浮點數來表示的。Icap參數獲得一個被或的能力標識,這個被定義為CompressionCaps枚舉類型。
這些參數的任何一個都可以設置為NULL,。例如如果為了獲得版本和描述字元串,第一次調用方法的時候,第一個和第三個參數為NULL。使用返回值cbVersion和cbDesc來分配緩沖區,然後再次調用該方法:
int cbVersion, cbDesc; // Size in bytes, not characters!
hr = pCompress->GetInfo(0, &cbVersion, 0, &cbDesc, 0, 0, 0, 0);
if (SUCCEEDED(hr))
{
WCHAR *pszVersion = new WCHAR[cbVersion/2];
WCHAR *pszDesc = new WCHAR[cbDesc/2];
hr = pCompress->GetInfo(pszVersion, 0, pszDesc, 0, 0, 0, 0, 0);
}
iCap參數提供了對IAMVideoCompression方法的過濾器的支持能力。例如,如果iCap包含了CompressionCaps_CanKeyFrame標志,你就可以調用IAMVideoCompression::get_KeyFrameRate方法來得到關鍵楨的速率,調用IAMVideoCompression::put_KeyFrameRate來設置楨速率。如果iCap的值沒有包含這些參數,那麼就只能使用默認的值了。
if (lCap & CompressionCaps_CanKeyFrame)
{
hr = pCompress->get_KeyFrameRate(&lKeyFrame);
if (FAILED(hr) || lKeyFrame < 0)
{
lKeyFrame = lDefaultKeyFrame; // 來自 GetInfo.
}
}
下面的代碼試著在輸出引腳尋找IAMVideoCompression介面。如果成功,它將會返回默認的和實際的壓縮屬性值。
HRESULT hr = E_FAIL;
IEnumPins *pEnum = NULL;
IPin *pPin = NULL;
IAMVideoCompression *pCompress = NULL;
// 尋找支持 IAMVideoCompression的引腳
pFilter->EnumPins(&pEnum);
while (S_OK == pEnum->Next(1, &pPin, NULL))
{
hr = pPin->QueryInterface(IID_IAMVideoCompression, (void**)&pCompress);
pPin->Release();
if (SUCCEEDED(hr)) // Found the interface.
{
break;
}
}
if (SUCCEEDED(hr))
{
long lCap; // 性能標識
long lKeyFrame, lPFrame; // 真實值
double m_Quality;
long lKeyFrameDef, lPFrameDef; //默認值
double QualityDef;
//得到默認值和它的性能
hr = pCompress->GetInfo(0, 0, 0, 0, &KeyFrameDef, &lPFrameDef,
&QualityDef, &lCap);
if (SUCCEEDED(hr))
{
// 得到實際的值.
if (lCap & CompressionCaps_CanKeyFrame)
{
hr = pCompress->get_KeyFrameRate(&lKeyFrame);
if (FAILED(hr) || lKeyFrame < 0)
lKeyFrame = lKeyFrameDef;
}
if (lCap & CompressionCaps_CanBFrame)
{
hr = pCompress->get_PFramesPerKeyFrame(&lPFrame);
if (FAILED(hr) || lPFrame < 0)
lPFrame = lPFrameDef;
}
if (lCap & CompressionCaps_CanQuality)
{
hr = pCompress->get_Quality(&Quality);
if (FAILED(hr) || Quality < 0)
Quality = QualityDef;
}
}
}
注意:如果你使用IcaptureGraphBuilder2介面來創建你的過濾圖形,你可以調用IcaptureGraphBuilder2::FindInterface方法來獲得IAMVideoCompression介面。
3、 建立壓縮圖形
下圖是一個典型的AVI文件的過濾圖形:
AVI_Splitter過濾器從文件的源過濾器(File Source(Async))拉數據,然後分解到視頻和音頻流。視頻解壓縮過濾器解碼被壓縮的視頻,然後重新被視頻壓縮器重新壓縮。
被壓縮的視頻進入到AVI Mux過濾器。音頻流在這個例子中沒有被壓縮,因此它直接從AVI Splitter傳輸到AVI Mux。AVI Mux進行隔行掃描,然後使用File Write過濾器將數據輸出到磁碟上。注意,就算原始文件裡面沒有音頻流,AVI Mux過濾器也是必須的。最簡單的方法創建這種過濾圖形就是使用Capture Graph Builder,這是DirectShow裡面為了建立捕獲圖形或者別的定製的過濾圖形的一個部件。
注意:DirectShow裡麵包含了兩個Capture Graph Builder版本。它們提供了不同的介面和類的標識。早期的版本類標識是CLSID_CaptureGraphBuild,介面是IcaptureGraphBuilder。它兼容存在的應用程序。新版本的類標識是CLSID_CaptureGraphBuilder2新的介面名稱是IcaptureGraphBuilder2。新的介面比老的介面有更多的靈活性。
創建Capture Graph Builder我們還是使用CoCreateInstance:
ICaptureGraphBuilder2 *pBuild = NULL;
hr = CoCreateInstance(CLSID_CaptureGraphBuilder2,
NULL, CLSCTX_INPROC_SERVER,
IID_ICaptureGraphBuilder2, (void **)&pBuild);
然後我們使用Capture Graph Builder來建立過濾圖形:
a、 建立部分渲染的過濾圖形,它包含AVI Mux 過濾器和File Writer過濾器。
b、 添加源過濾器和壓縮過濾器。
c、 連接源過濾器到MUX 過濾器。
下面逐步的解釋每一個細節:
建立渲染段
為了建立過濾圖形的渲染段,調用IcaptureGraphBuilder2::SetOutputFileName方法。它返回一個MUX的過濾器和File Write的指針。MUX是下面建立過濾圖形所需要的,但是這個例子不需要File Write,因此,它的參數為NULL。
IBaseFilter *pMux = NULL;
pBuild->SetOutputFileName(
&MEDIASUBTYPE_Avi, //文件類型
wszOutputFile, // 文件名
&pMux, // 得到一個指向multiplexer的指針
NULL); // 得到一個指向File Write的指針
當該方法返回,MUX過濾器有一個很明顯的參考計數,所以以後一定要確保釋放它。MUX過濾器提供了兩個介面來控制AVI格式:
IconfigInterleaving介面:設置交錯模式
IconfigAviMux介面:設置主流和AVI兼容性的索引
添加源過濾器和壓縮過濾器
下一步我們要在過濾圖形中添加源過濾器和壓縮過濾器。當你調用SetOutputFileName的時候,Capture Graph Builder會自動的創建一個過濾圖形管理器的實例。你可以調用IcaptureGraphBuilder::GetFiltergraph方法來獲得剛才創建的過濾圖形管理器的指針。
IGraphBuilder *pGraph = NULL;
pBuild->GetFiltergraph(&pGraph);
現在我們該調用IgraphBuilder::AddSourceFilter方法來添加非同步文件源過濾器,然後調用IfilterGraph::AddFilter方法來添加視頻壓縮過濾器:
IBaseFilter *pSrc = NULL;
pGraph->AddSourceFilter(wszInputFile, L"Source Filter", &pSrc);
pGraph->AddFilter(pVComp, L"Compressor");
到了這一步我們的狀態就象下圖那樣,源過濾器和壓縮過濾器沒有和別的任何過濾器連接。
連接源到Mux
最後一步就是通過視頻壓縮過濾器連接源過濾器到AVI Mux過濾器。我們使用IcaptureGraphBuilder2::RenderStream方法來連接源過濾器的輸出引腳到指定的過濾器。
前兩個參數指定了用那個源過濾器的引腳來連接,通過指明引腳的分類和媒體類型來實現。非同步文件源過濾器只有一個輸出引腳,所以這些參數要設置成NULL。後三個參數指定了源過濾器,壓縮過濾器,和Mux過濾器。
下面的代碼演示了通過視頻壓縮過濾器來渲染視頻流:
pBuild->RenderStream(
NULL, // 輸出引腳類型
NULL, // 媒體類型
pSrc, // 源過濾器
pVComp, // 壓縮過濾器
pMux);
假定源文件包含了音頻流,AVI Splitter過濾器會在輸出引腳輸出音頻流。為了連接這個管腳我們需要再次調用RenderStream:
pBuild->RenderStream(NULL, NULL, pSrc, NULL, pMux);
這里我們沒有指定壓縮過濾器。而且源過濾器的輸出引腳已經連接了,因此RenderStream方法會搜索一個未連接的輸出引腳到Splitter過濾器。它可以直接連接引腳到MUX過濾器。但是如果源文件沒有音頻流,那麼第二次調用會失敗。
4、 寫文件
如果想寫文件正常的進行,你必須調用ImediaControl::Run方法來運行過濾圖形。等到播放完成後調用ImediaControl::Stop。
如果要顯示文件的寫的進度,你可以使用ImediaSeeking來查詢Mux過濾器。調用ImediaSeeking::GetDuration方法來獲得文件的持續時間。定時的使用ImediaSeeking::GetCurrentPostition方法來獲得當前的位置,但必須要是過濾圖形運行中。
注意,一般情況下我們用ImediaSeeking介面查詢過濾圖形管理器來定位,如果正在寫文件的話,這將是一個特例。這里我們要查詢Mux過濾器就可以了。查詢過濾圖形定位要求回放的時候才可以,而不是寫文件的時候。
看了下面的代碼讀者就會更加清楚了。
IMediaSeeking *pSeek = NULL;
IMediaEventEx *pEvent = NULL;
IMediaControl *pControl = NULL;
REFERENCE_TIME rtTotal;
hr = pMux->QueryInterface(IID_IMediaSeeking, (void**)&pSeek);
hr = pGraph->QueryInterface(IID_IMediaEventEx, (void**)&pEvent);
hr = pGraph->QueryInterface(IID_IMediaControl, (void**)&pControl);
// 設置DirectShow的時間通報
hr = pEvent->SetNotifyWindow((OAHWND)hwnd, WM_GRAPHNOTIFY, 0);
hr = GetDuration(&rtTotal);
SendDlgItemMessage(hwnd, IDC_PROGRESS1, PBM_SETRANGE, 0,
MAKELPARAM(0, rtTotal / 10000000));
// 開始時間.
UINT_PTR res = SetTimer(hwnd, nIDEvent, 100, NULL);
// 運行過濾圖形.
pControl->Run();
當應用程序收到定時器事件,它就更新當前位置:
void OnTimer(HWND hDlg, IMediaSeeking *pSeek)
{
REFERENCE_TIME rtNow;
HRESULT hr = pSeek->GetCurrentPosition(&rtNow);
if (SUCCEEDED(hr))
{
SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, rtNow/10000000, 0);
}
}
當應用程序收到DirectShow結束事件,它就可以停止圖形,就象下面那樣:
LRESULT CALLBACK WndProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
/* ... */
case WM_GRAPHNOTIFY:
DoHandleEvent();
break;
/* ... */
}
}
void DoHandleEvent()
{
long evCode, param1, param2;
bool bComplete = false;
if (!pEvent) return;
//得到所有的事件
while (SUCCEEDED(pEvent->GetEvent(&evCode, ¶m1, ¶m2, 0))
{
pEvent->FreeEventParams(evCode, param1, param2);
switch(evCode)
{
case EC_USERABORT:
case EC_ERRORABORT:
case EC_COMPLETE:
bComplete = true;
break;
}
}
if (bComplete)
{
pControl->Stop(); // Important! You must stop the graph!
//關掉事件通報.
pEvent->SetNotifyWindow(NULL, 0, 0);
pEvent->Release();
pEvent = NULL;
SendDlgItemMessage(IDC_PROGRESS1, PBM_SETPOS, 0, 0);
KillTimer(hwnd, nIDEvent);
}
}
㈨ OpenGL中怎麼使用壓縮紋理
glCompressedTexImage2DARB就是直接載入DXT數據的函數哦,該函數不能直接載入dds。
dds格式分為2個部分:
1、dds頭
2、dxt壓縮數據
dds的頭文件信息如下:
/*
* DDCOLORKEY
*/
typedef struct _DDCOLORKEY
{
uint32 dwColorSpaceLowvalue; // low boundary of color space that is to
// be treated as Color Key, inclusive
uint32 dwColorSpaceHighvalue; // high boundary of color space that is
// to be treated as Color Key, inclusive
} DDCOLORKEY;
/*
* DDSCAPS2
*/
typedef struct _DDSCAPS2
{
uint32 dwCaps; // capabilities of surface wanted
uint32 dwCaps2;
uint32 dwCaps3;
union
{
uint32 dwCaps4;
uint32 dwVolumeDepth;
} DUMMYUNIONNAMEN(1);
} DDSCAPS2;
/*
* DDPIXELFORMAT
*/
typedef struct _DDPIXELFORMAT
{
uint32 dwSize; // size of structure
uint32 dwFlags; // pixel format flags
uint32 dwFourCC; // (FOURCC code)
union
{
uint32 dwRGBBitCount; // how many bits per pixel
uint32 dwYUVBitCount; // how many bits per pixel
uint32 dwZBufferBitDepth; // how many total bits/pixel in z buffer (including any stencil bits)
uint32 dwAlphaBitDepth; // how many bits for alpha channels
uint32 dwLuminanceBitCount; // how many bits per pixel
uint32 dwBumpBitCount; // how many bits per "buxel", total
uint32 dwPrivateFormatBitCount;// Bits per pixel of private driver formats. Only valid in texture
// format list and if DDPF_D3DFORMAT is set
} DUMMYUNIONNAMEN(1);
union
{
uint32 dwRBitMask; // mask for red bit
uint32 dwYBitMask; // mask for Y bits
uint32 dwStencilBitDepth; // how many stencil bits (note: dwZBufferBitDepth-dwStencilBitDepth is total Z-only bits)
uint32 dwLuminanceBitMask; // mask for luminance bits
uint32 dwBumpDuBitMask; // mask for bump map U delta bits
uint32 dwOperations; // DDPF_D3DFORMAT Operations
} DUMMYUNIONNAMEN(2);
union
{
uint32 dwGBitMask; // mask for green bits
uint32 dwUBitMask; // mask for U bits
uint32 dwZBitMask; // mask for Z bits
uint32 dwBumpDvBitMask; // mask for bump map V delta bits
struct
{
uint16 wFlipMSTypes; // Multisample methods supported via flip for this D3DFORMAT
uint16 wBltMSTypes; // Multisample methods supported via blt for this D3DFORMAT
} MultiSampleCaps;
} DUMMYUNIONNAMEN(3);
union
{
uint32 dwBBitMask; // mask for blue bits
uint32 dwVBitMask; // mask for V bits
uint32 dwStencilBitMask; // mask for stencil bits
uint32 dwBumpLuminanceBitMask; // mask for luminance in bump map
} DUMMYUNIONNAMEN(4);
union
{
uint32 dwRGBAlphaBitMask; // mask for alpha channel
uint32 dwYUVAlphaBitMask; // mask for alpha channel
uint32 dwLuminanceAlphaBitMask;// mask for alpha channel
uint32 dwRGBZBitMask; // mask for Z channel
uint32 dwYUVZBitMask; // mask for Z channel
} DUMMYUNIONNAMEN(5);
} DDPIXELFORMAT;
/*
* DDSURFACEDESC2
*/
typedef struct _DDSURFACEDESC2
{
uint32 dwSize; // size of the DDSURFACEDESC structure
uint32 dwFlags; // determines what fields are valid
uint32 dwHeight; // height of surface to be created
uint32 dwWidth; // width of input surface
union
{
int32 lPitch; // distance to start of next line (return value only)
uint32 dwLinearSize; // Formless late-allocated optimized surface size
} DUMMYUNIONNAMEN(1);
union
{
uint32 dwBackBufferCount; // number of back buffers requested
uint32 dwDepth; // the depth if this is a volume texture
} DUMMYUNIONNAMEN(5);
union
{
uint32 dwMipMapCount; // number of mip-map levels requestde
// dwZBufferBitDepth removed, use ddpfPixelFormat one instead
uint32 dwRefreshRate; // refresh rate (used when display mode is described)
uint32 dwSrcVBHandle; // The source used in VB::Optimize
} DUMMYUNIONNAMEN(2);
uint32 dwAlphaBitDepth; // depth of alpha buffer requested
uint32 dwReserved; // reserved
void* lpSurface; // pointer to the associated surface memory
union
{
DDCOLORKEY ddckCKDestOverlay; // color key for destination overlay use
uint32 dwEmptyFaceColor; // Physical color for empty cubemap faces
} DUMMYUNIONNAMEN(3);
DDCOLORKEY ddckCKDestBlt; // color key for destination blt use
DDCOLORKEY ddckCKSrcOverlay; // color key for source overlay use
DDCOLORKEY ddckCKSrcBlt; // color key for source blt use
union
{
DDPIXELFORMAT ddpfPixelFormat; // pixel format description of the surface
uint32 dwFVF; // vertex format description of vertex buffers
} DUMMYUNIONNAMEN(4);
DDSCAPS2 ddsCaps; // direct draw surface capabilities
uint32 dwTextureStage; // stage in multitexture cascade
} DDSURFACEDESC2;
struct DDS_IMAGE_DATA
{
int width;
int height;
int components;
unsigned int format;
int numMipMaps;
unsigned char *pixels;//這個是壓縮的圖像信息文件,glCompressedTexImage2DARB就是載入這個。
};