请问:如何减少JPEG的图形尺寸(200分)

  • 主题发起人 主题发起人 杨先彬
  • 开始时间 开始时间

杨先彬

Unregistered / Unconfirmed
GUEST, unregistred user!
扫描出来的图形尺寸很大,导致整个图形文件 size 很大。请问如何减少图形文件的尺寸?
我的源程序如下:
Temp_Jpeg:=TJpegImage.Create;
Temp_BitMap:=TBitMap.Create;

Temp_BitMap.LoadFromFile(FileName);

Temp_Jpeg.Grayscale:=true;
Temp_Jpeg.Scale:=jsQuarter;
Temp_Jpeg.PixelFormat:=jf8Bit;
Temp_Jpeg.Performance :=jpBestSpeed;
Temp_Jpeg.ProgressiveDisplay :=true;

Temp_Jpeg.Compress;
Temp_JPeG.CompressionQuality:=30;
Temp_JPeG.JPegNeeded;

Temp_Jpeg.Assign(Temp_BitMap);

Temp_FileName:=ChangeFileExt( FileName, '.jpeg');

Temp_Jpeg.SaveToFile(Temp_FileName);
 
TJPEGImage的属性
Grayscale:=true;
Scale:=jsQuarter;
PixelFormat:=jf8Bit;
Performance :=jpBestSpeed;
ProgressiveDisplay :=true;
只用于解压的,对于BMP->JPEG是没用的。要减小JPG的大小,可以设高压缩比和小的图像的分辨率。
在Tbitmap上把图像的分辨率该小。
 
能不能给段例子呢?谢谢!
 
Tjpeg 的压缩效率不是很高,你如果很在乎的话,可以用 photoShop 转换,
如果一定要在程序中处理,可以 把 输出的 Jpeg 再 用Lzw 压一次,
可减小 30% 以上.
 
>> 在Tbitmap上把图像的分辨率该小。
TBitmap.PixelFormat := ...; <font color=green><i>//控制单个象素所占的位数</i></font>

PixelFormat属性的取值和意义
---------------------------------------------------------------
取 值 | 意 义
---------------------------------------------------------------
pfDevice | 位图为DDB格式
pf1bit | 单色模式,每象素占 1 位
pf4bit | 16 色模式,每象素占 半 字节
pf8bit | 256 色模式,每象素占 1 字节
pf15bit | 高 色模式,每象素占 2 字节,但只有 15 位有效
pf16bit | 高 色模式,每象素占 2 字节
pf24bit | 真 色模式,每象素占 3 字节,分别表示 R G B
pf32bit | 32 色模式,每象素占 4 字节
pfCustom | 用户定义或不认识的模式
---------------------------------------------------------------

=======================
你看看这样:
把图象以合适的比例缩小显示到TImage中,在保存不也行吗
(不用TImang的Stretch属性,用CopyRect(...)缩放)
 
呵呵,你的size指的是什么呢?是文件大小,还是width,height?
我想应该是width,height吧,因为你说是扫描出来的。

其实就用scale就行,可以设为1/8大小,然后用一bitmap.assighn就行了。
 
把image的stretch设为true应该还可以吧
 
多人接受答案了。
 
后退
顶部