2016-07-02 9 views
0

NETのC#コードデルファイ(X3ビガー)のJPEG .NET対(X1小)のJPEGファイルサイズ

var mimage = new MemoryStream(); 
    my_image.Save(mimage, System.Drawing.Imaging.ImageFormat.Jpeg); 

Delphiコード

//bSource HAS THE ORIGINAL IMAGE 
bSource := Tbitmap.Create; 
//... 
//CODES HERE... 
//... 
//CODES HERE... 
//... 
bDest := Tbitmap.Create; 
bDest.SetSize(r.width , r.height); 
bDest.Canvas.FillRect(bDest.Canvas.ClipRect); 
//CODES HERE... 
//bDest HAS THE IMAGE FROM <<<bSource>>>> 
//CODES HERE.. 
bSource.Free; 
jDest := TJpegImage.Create; 
jDest.ProgressiveEncoding:=true; 
jDest.CompressionQuality :=100; 
jDest.Smoothing := True; 
jDest.PixelFormat := jf24bit; 
jDest.Compress; 
jDest.Assign(bDest); //bDest COPY 
jDest.SaveToFile('BIG_FILESIZE_THAN.NET.JPEGx3.jpg'); //FILE SIZE IS TIMES 3 BIGGER THAN .NET 
jDest.Free; 
bDest.Free; 

保存

時に比較するために、同じ画像DelphiのFilesizeは5kで、200x200では8bpp = BIGGERですか?

.Netのファイルサイズは2k、200x200で24bpp =より小さい?

.NETのサイズのようにするには、Delphiで何をしなければなりませんか?

+1

DelphiではCompressionQualityを75に設定してみてください。 http://stackoverflow.com/questions/3957477/what-quality-level-does-image-save-use-for-jpeg-files –

+0

特に大きなファイルサイズをリクエストしていませんか? –

答えて

4

デフォルトでは、指定されていないため、C#コードでは圧縮品質レベルが75程度(What quality level does Image.Save() use for jpeg files?)です。

あなたのDelphiコードの品質レベルは100です。そのため、Delphiコードで生成された画像の画質は向上しますが、サイズも大きくなります。ファイルサイズを小さくするには、低品質のレベルを指定します。

+0

ありがとうございます。 – mayzul

関連する問題