導航:首頁 > 文件處理 > matlab實現圖像的壓縮

matlab實現圖像的壓縮

發布時間:2022-01-20 09:35:05

A. 常用的matlab圖像壓縮有哪些

常用的matlab圖像壓縮有哪些
法對圖像進行壓縮,得到一組壓縮編碼,然後解碼這組編碼,得到一幅解壓縮圖像.對解碼圖像與原始圖像求差值,得到一差值圖像,然後對該差值圖像進行適當的編碼.對差值圖像的編碼與初級編碼共同構成對原始圖像的編碼.

B. matlab實現lzw圖像壓縮

附件中是sift的matlab實現代碼,在matlab中直接點擊運行do_demo_3.m即可實現圖像匹配do_demo_1.m可以顯示sift特徵點具

C. matlab如何求出圖片的大小,以確定壓縮前後圖片大小的變化,得出壓縮比。

D = dir('sample.jpg');
D.bytes是以位元組表示的圖片大小

D. 求教高人,用MATLAB軟體怎樣的實現圖像的分形壓縮

分形編碼的基本思路是:先採用一種合適的初級壓縮方法對圖像進行壓縮,得到一組壓縮編碼,然後解碼這組編碼,得到一幅解壓縮圖像.對解碼圖像與原始圖像求差值,得到一差值圖像,然後對該差值圖像進行適當的編碼.對差值圖像的編碼與初級編碼共同構成對原始圖像的編碼.這種方法需要選擇合適的初級編碼方法與差值編碼方法,使得這兩者相結合,可以得到一種綜合性能較好的編碼方法。

其定義如圖。

%%%%%%%%%%%%%%

clear

tic

%Image1=imread('piccameraman.tif');

xianshi;

number=input('inputthenumber:');

Image1=suoxiao('piccameraman.tif',number);

[imagemimagen]=size(Image1);

Sr=4;Sd=8;

Rnum=(imagem/Sr)*(imagen/Sr);

Dnum=(imagem/Sd)*(imagen/Sd);

Image2=zeros(Dnum,Sr,Sr);

Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');

%壓縮image1為原來1/2

%

RBlocks=zeros(Rnum,Sr,Sr);

DBlocks=zeros(Dnum,Sd,Sd);

DBlocksRece=zeros(Dnum*8,Sr,Sr);

%%取R塊,K記標號----------------------------------

fori=1:imagem/Sr

forj=1:imagen/Sr

k=(i-1)*imagen/Sr+j;

RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);

end

end

%取R塊,K記標號----------------------------------

fori=1:imagem/Sd

forj=1:imagen/Sd

k=(i-1)*imagen/Sd+j;

m=Sr;n=Sr;

DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);

DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:);%行上下翻轉===(x軸對稱)

DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1);%列左右翻轉====y軸對稱

DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1);%先行翻,再列翻旋轉180度

DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)';%關於y=-x對稱

A=reshape(DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';

DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1);%關於y=x對稱

DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90);%逆時針旋轉90度

DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270);%逆時針旋轉270度

DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);

end

end

RandDbest=zeros(Rnum,1)+256^3;

RandDbests=zeros(Rnum,1);

RandDbesto=zeros(Rnum,1);

RandDbestj=zeros(Rnum,1);

fori=1:Rnum

x=reshape(RBlocks(i,:,:),Sr*Sr,1);

meanx=mean(x);

forj=1:Dnum*8

y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);

meany=mean(y);

s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%計算s

o=(meanx-s*meany);%計算o

c=(x-s*y-o)'*(x-s*y-o);%距離

if(RandDbest(i)>c)&(abs(s)<1)

RandDbest(i)=c;

RandDbests(i)=s;

RandDbesto(i)=o;

RandDbestj(i)=j;%可以找到對應變換和D塊

end

end

end

%iterationlimit

toc

tic

m=8;%解碼迭代次數

e=mean(mean(Image1));

Image3=e*ones(imagem,imagen);%解碼初始圖象

forL=1:m

Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');

fori=1:imagem/Sr

forj=1:imagen/Sr

m=Sr;n=Sr;

k=(i-1)*imagen/Sr+j;

l=RandDbestj(k);

k1=mod(l-1,Dnum)+1;%第幾個D

l1=(l-k1)/Dnum+1;%變換號

%R對應D在Image4的起始點

j1=mod(k1-1,imagen/Sd)+1;

i1=(k1-j1)/(imagen/Sd)+1;

%變換------------------------------------------------------------------------

DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);

switchl1-1

case0

DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);

case1

DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);

case2

DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);

case3

DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);

case4

DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';

case5

DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);

A=reshape(DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';

DBlocksRece(l,:,:)=A(:,n:-1:1);

case6

DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);

case7

DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);

end

%變換結束--------------------------------------------------------------------

RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);

%生成R---------------------------

Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代圖象

end

end

wucha=double(Image1)-Image3;%誤差圖

Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))

PSNR=psnr(wucha)

figure

imshow(uint8(Image3))

end

toc

figure

wucha=uint8(wucha);

imshow(wucha)

figure

imshow(uint8(Image1)),title('原圖');

save('sa.mat')

fangtu(wucha);%%%%分形主函數

%%%%%%%%%%%%%%%%%%%%%%%%%%%%

子函數:1:

functionb=suoxiao(filename,bili)

a=imread(filename);

a=double(a);

[m,n]=size(a);

i=1;

whilei=m/bili

j=1;

whilej=n/bili

k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));

b(i,j)=k;

j=j+1;

end

i=i+1;

end

%b=uint8(b);

size(b)

%imshow(b)

子函數2:

%clc

functionfangtu(a)

J=a;

%計算灰度圖象的直方圖數據,a為如象數組

L=256;%灰度級

Ps=zeros(L,1);%統計直方圖結果數據

nk=zeros(L,1);

[row,col]=size(a);

n=row*col;%總像素個數

fori=1:row

forj=1:col

num=double(a(i,j))+1;%獲取像素點灰度級

nk(num)=nk(num)+1;%統計nk

end

end

%計算直方圖概率估計

fori=1:L

Ps(i)=nk(i)/n;

end

figure;

subplot(3,1,1);imshow(J),title('誤差圖');

subplot(3,1,2),plot(nk),title('直方圖(nk)');

subplot(3,1,3),plot(Ps),title('直方圖(Ps)');

子函數3:

functionPSNR=psnr(a)

[m,n]=size(a);

a=uint8(a);

a=double(a);

imagesize=m*n;

MSE=sum(dot(a,a))/imagesize;

PSNR=10*log10(255^2/MSE);

%%%%%%%%%%%%%%%%%%%%%%

說明:

1、因為本程序時間長,FX中先選擇圖片的大小

2、編碼與解碼

3、做誤差圖和只方圖

4:畫出每次迭代的解碼圖象

E. 如何用MATLAB進行圖像壓縮

I
=
imread('cameraman.tif');
%
輸入圖像
I
=
im2double(I);
%
數據類型轉換
T
=
dctmtx(8);
%
計算二維離散DCT矩陣
dct
=
@(x)T
*
x
*
T';
%
設置函數句柄
B
=
blkproc(I,[8
8],dct);
%
圖像塊處理
mask
=
[1
1
1
1
0
0
0
0
%
掩膜
1
1
1
0
0
0
0
0
1
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0];
B2
=
blkproc(B,[8
8],@(x)mask.*
x);
%
圖像塊處理
invdct
=
@(x)T'
*
x
*
T;
%
設置函數句柄
I2
=
blkproc(B2,[8
8],invdct);
%
圖像塊處理
imshow(I),
figure,
imshow(I2)
%
顯示原始圖像和壓縮重構圖像

F. 如何用MATLAB進行圖像壓縮

1、首先在電腦中雙擊matlab軟體,使用語句:x=0:0.2:7*pi:創建一個一維數組,表示三維離散序列圖的在x軸上的分布范圍。

G. matlab中圖像壓縮技術是怎麼實現的

基於小波分析的圖像壓縮方法很多 , 有小波包最好基方法 、小波域紋理模型方法 、變換零樹壓縮 、小波變換向量量化壓縮等等,不過具體理論都是差不多的,區別是演算法方式不同,有興趣的可以去matlab的網站去看看 http://www.ilove matlab .cn 一個圖像作小波分解後 , 可得到一系列不同解析度的子圖像 ,不同解析度的子圖像對應的頻率是 不相同的 。高解析度 ( 即高頻) 子圖像上大部分點的數值都接近於 0 , 越是高頻這種現象越明顯 。對一 個圖像來說 ,表現一個圖像最主要的部分是低頻部分 ,所以一個最簡單的壓縮方法是利用小波分解 ,去 掉圖像的高頻部分而只保留低頻部分 。 下面具體介紹利用 MA TLAB[ 2 ] 中二維小波分析一個圖像 ( 即一個二維信號 , 設文件名為 wbarb. mat) 進行圖像壓縮的實例 。圖像壓縮可按如下程序進行處理 。 程序清單 : clear %清除 MA TLAB 工作環境中現有的變數 load wbarb ; %裝入圖像 %顯示圖像 subplot ( 221) ;image ( X) ; colormap ( map ) title ( 』原始圖像』 ;) axis square disp ( 』壓縮前圖像 X 的大小 : 』 ;) Whos ( 』』X ) %= = = = = = = = = = = = = = = = = = %對圖像用 bior3. 7 小波進行 2 層小波分解 [ c ,s ] = wavedec2 ( X ,2 ,』bior3. 7』 ;) %對圖像用 bior3. 7 小波進行 2 層小波分解 [ c ,s ] = wavedec2 ( X ,2 ,』 bior3. 7』 ; ) %提取小波分解結構中第 1 層的低頻系數和高 頻系數 cal = appcoef2 ( c ,s ,』 bior3. 7』 ,l) ; ch1 = detcoef2 ( 』h' ,c ,s ,1) ; %水平方向 cv1 = detcoef2 ( 』V 』,c ,8 ,1) ; %垂直方向 cdl = detcoef2 ('d',C ,S ,1) ; %斜線方向 %分別對各頻率成份進行重構 al = wrcoef2 ( 'a',c ,s ,』bior3. 7』 ,1) ; h1 = wrcoef2 ( 』h』,c ,s ,』bior3. 7』 ,1) ; v1 = wrcoef2 ( 』v』,c ,s ,』bior3. 7』 ,1) ; dl = wrcoef2 ( 』d』,c ,s ,』bior3. 7』 ,1) ; c1 = [ al ,hl ,v1 ,d1」; %顯示分解後各頻率成份的信息 subplot ( 222) ; image ( c1) ; axis squaretitle ( 』分解後低頻和高頻信息』 ;) %= = = = = = = = = = = = = = = = = = = %下面進行圖像壓縮處理 %保留小波分解第一層低頻信息 , 進行圖像的壓縮 %第 1 層的低頻信息即為 cal , 顯示第 1 層的低頻信息 %首先對第 1 層信息進行量化編碼它處理即可獲得較好的壓縮效果 。在上面的例 子中,我們還可以只提取小波分解第 3 、4 … 層的低頻信息 ,從理論上說 ,我們可以獲得任意壓縮比的壓 縮圖像 。由此可以看出 , 小波分析用於圖像壓縮具有明顯的優點 。 在利用二維小波變換進行圖像壓縮時需要說明的是 : 小波變換為圖像從空間域交換到時間域提供 了一種非常有效的方法 , 它的作用與以前在圖像壓縮中所用到的離散餘弦變換 ( DCT) 、傅里葉變換等 的作用類似 。但是 ,要很好地進行圖像的壓縮 ,需要綜合地利用多種其它技術 , 特別是數據編碼與解碼 演算法等 ,所以利用小波分析進行圖像壓縮往往是藉助小波分析和許多其它相關技術共同完成的 。

H. matlab中如何求圖像的壓縮比 (代碼)

I為壓縮前的圖像數據,I1為壓縮後的圖像數據。
[m1 n1]=size(I1);
[m n]=size(I);
t=m1*n1/(m*n);

那把你要求的壓縮比公式寫一下吧

I. JPEG圖像編碼,要求:輸入BMP圖像,輸出JPG壓縮圖像。(用Matlab編程實現!)

輸入
y=imread('lena_2561.bmp');
顯示
imshow(y),
輸出
imwrite(y,'y1.jpg');
壓縮有好多方法的,小波分析等!

J. 圖像壓縮 MATLAB實現 如何解壓縮一個被壓縮過的圖像 急急急

法對圖像進行壓縮,得到一組壓縮編碼,然後解碼這組編碼,得到一幅解壓縮圖像.對解碼圖像與原始圖像求差值,得到一差值圖像,然後對該差值圖像進行適當的編碼.對差值圖像的編碼與初級編碼共同構成對原始圖像的編碼.這種方法需要選擇合適的初級編碼方法與差值編碼方法,使得這兩者相結合,可以得到一種綜合性能較好的編碼方法。
其定義如圖。
%%%%%%%%%%%%%%

clear
tic
%Image1=imread('pic\cameraman.tif');
xianshi;
number=input(' input the number:');
Image1=suoxiao('pic\cameraman.tif',number);
[imagem imagen]=size(Image1);
Sr=4;Sd=8;
Rnum=(imagem/Sr)*(imagen/Sr);
Dnum=(imagem/Sd)*(imagen/Sd);
Image2=zeros(Dnum,Sr,Sr);
Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');
%壓縮image1為原來1/2
% there are no eight tranformation for simpleness
RBlocks=zeros(Rnum,Sr,Sr);
DBlocks=zeros(Dnum,Sd,Sd);
DBlocksRece=zeros(Dnum*8,Sr,Sr);
%%取R塊,K記標號----------------------------------
for i=1:imagem/Sr
for j=1:imagen/Sr
k=(i-1)*imagen/Sr+j;
RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);

end
end
%取R塊,K記標號----------------------------------
for i=1:imagem/Sd
for j=1:imagen/Sd
k=(i-1)*imagen/Sd+j;
m=Sr;n=Sr;
DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:); % 行上下翻轉===(x軸對稱)
DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1); % 列左右翻轉 ==== y軸對稱
DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1); % 先行翻,再列翻 旋轉180度
DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)'; % 關於y=-x對稱
A=reshape( DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1); % 關於y=x對稱
DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90); % 逆時針旋轉90度
DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270); % 逆時針旋轉270度

DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);
end
end
RandDbest=zeros(Rnum,1)+256^3;
RandDbests=zeros(Rnum,1);
RandDbesto=zeros(Rnum,1);
RandDbestj=zeros(Rnum,1);
for i=1:Rnum
x=reshape(RBlocks(i,:,:),Sr*Sr,1);
meanx=mean(x);
for j=1:Dnum*8
y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);
meany=mean(y);
s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%計算s
o=(meanx-s*meany);%計算o
c=(x-s*y-o)'*(x-s*y-o);%距離
if (RandDbest(i)>c)&(abs(s)<1)
RandDbest(i)=c;
RandDbests(i)=s;
RandDbesto(i)=o;
RandDbestj(i)=j;%可以找到對應變換和D塊
end
end
end
%iteration limit
toc
tic
m=8;%解碼迭代次數
e=mean(mean(Image1));
Image3=e*ones(imagem,imagen);%解碼初始圖象
for L=1:m
Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');

for i=1:imagem/Sr
for j=1:imagen/Sr
m=Sr;n=Sr;
k=(i-1)*imagen/Sr+j;
l=RandDbestj(k);
k1=mod(l-1,Dnum)+1;%第幾個D
l1=(l-k1)/Dnum+1;%變換號
%R對應D在Image4的起始點
j1=mod(k1-1,imagen/Sd)+1;
i1=(k1-j1)/(imagen/Sd)+1;
%變換------------------------------------------------------------------------
DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
switch l1-1
case 0
DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
case 1
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);
case 2
DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);
case 3
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
case 4
DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';
case 5
DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
A=reshape( DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(l,:,:)=A(:,n:-1:1);
case 6
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);
case 7
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);
end
%變換結束--------------------------------------------------------------------
RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);
%生成R---------------------------
Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代圖象
end
end
wucha=double(Image1)-Image3;%誤差圖

Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))
PSNR=psnr(wucha)
figure
imshow(uint8(Image3))
end
toc
figure
wucha=uint8(wucha);
imshow(wucha)
figure
imshow(uint8(Image1)),title('原圖');
save('sa.mat')
fangtu(wucha);%%%%分形主函數
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
子函數:1:
function b=suoxiao(filename,bili)
a=imread(filename);
a=double(a);
[m,n]=size(a);
i=1;
while i=m/bili
j=1;
while j=n/bili
k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));
b(i,j)=k;
j=j+1;
end
i=i+1;
end
%b=uint8(b);
size(b)
%imshow(b)
子函數2:
%clc
function fangtu(a)
J=a;
%計算灰度圖象的直方圖數據,a為如象數組
L=256; %灰度級
Ps = zeros(L,1); %統計直方圖結果數據
nk=zeros(L,1);
[row,col]=size(a);
n=row*col; %總像素個數
for i = 1:row
for j = 1:col
num = double(a(i,j))+1; %獲取像素點灰度級
nk(num) = nk(num)+1; %統計nk
end
end
%計算直方圖概率估計
for i=1:L
Ps(i)=nk(i)/n;
end
figure;
subplot(3,1,1);imshow(J),title('誤差圖');
subplot(3,1,2),plot(nk),title('直方圖(nk)');
subplot(3,1,3),plot(Ps),title('直方圖(Ps)');
子函數3:
function PSNR=psnr(a)
[m,n]=size(a);
a=uint8(a);
a=double(a);
imagesize=m*n;
MSE=sum(dot(a,a))/ imagesize;
PSNR=10*log10(255^2/MSE);
%%%%%%%%%%%%%%%%%%%%%%
說明:
1、因為本程序時間長,FX中先選擇圖片的大小
2、編碼與解碼
3、做誤差圖和只方圖
4:畫出每次迭代的解碼圖象

閱讀全文

與matlab實現圖像的壓縮相關的資料

熱點內容
大都會軟體app如何掃碼 瀏覽:428
單片機0x38 瀏覽:751
程序員浪漫工作 瀏覽:321
php幾分鍾前 瀏覽:303
項目編譯及運行 瀏覽:889
程序員的基本功 瀏覽:519
遺傳演算法排班 瀏覽:286
如何加密金融安全網 瀏覽:27
家裡的wifi太卡了怎麼樣自己加密 瀏覽:230
華為鏈路聚合命令 瀏覽:423
apache自動運行php 瀏覽:516
485和單片機 瀏覽:974
xp修復系統命令 瀏覽:519
微你app怎麼加好友 瀏覽:795
程序員轉正 瀏覽:208
應用隱私加密忘記密碼怎麼辦 瀏覽:683
2g視頻怎麼壓縮 瀏覽:609
康佳電視伺服器異常怎麼解決 瀏覽:840
怎麼用c語言編譯簡單的小游戲 瀏覽:814
伺服器如何以域用戶登錄 瀏覽:602