把BMP保存成JPEG流/文件时是否会丢失颜色?(100分)

  • 主题发起人 主题发起人 takou
  • 开始时间 开始时间
T

takou

Unregistered / Unconfirmed
GUEST, unregistred user!
把BMP保存成JPEG流/文件时是否会丢失颜色?
chartimg :TBitmap;
....
jpegimg:=TJpegImage.Create;
jpegimg.CompressionQuality:=80;
jpegimg.PixelFormat:=jf24bit;
jpegimg.Performance:=jpBestQuality;
jpegimg.Assign(chartimg);
mystream:=TMemoryStream.Create;
jpegimg.SaveToStream(mystream);
mystream.Position:=0;
Response.ContentType:='image/jpeg';
Response.ContentStream:=mystream;
....
我在这样做的时候,如果在Form上输出,则没事,
但是一输出到JPEG流并在浏览器上观看时,则颜色就失真了。
我的BMP是16位色。在作图时可能用到了标准调色板以外的颜色值。
如何将标准调色板以外的颜色值映射到BMP的调色板中?
 
会!!!
正如你所说的BMP是一种索引颜色文件,它支持RGB色彩格式,INDEXED-COLOR,
灰度和位图格式.使用RLE的无损压缩方式.而JPG是一种RGB色彩格式文件,
其压缩格式压缩比高,图片质量有损失.
两者之间能表达的色彩空间可能是有区别的(使用的色彩模式不同时),
所以你在进行格式转换时,发生了色彩失真.
你可以将JPG的压缩质量继续提高(但图片大小会变大),或使用PHOTOSHOP等工具转
化BMP图象.
 
我以为,16位色应该不会,如果真是这样,可以把Bmp改为24位色,就应该正常。
 
会的,多少会的
 
JPEG用的是有损压缩,载入的图象在内存中是以未压缩位图的形式存在的,在你
保存为JPEG时才进行压缩,这时就会丢失一些信息。
 
把Bmp改为24位色(Bitmap.PixelFormat := pf24bit),还是不正常。
请教有效不丢色方法。
 
在设置颜色时,你肯定用的是匹配系统调色板$00BBGGRR方式。用$02BBGGRR方式,匹配最近的设备调色板即可。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
582
import
I
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部