图片格式转化的问题

taoran12 2011-03-10 09:25:37
delphi中怎么在不知道源图片是什么格式的情况下 将其转化为另一种格式比如 bitmap
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
无条件为你 2011-03-11
  • 打赏
  • 举报
回复
不知道格式的话可以直接载入到GDI+中显示,然后转换。加上容错处理就可以了。主要是防止非识别格式的文件。比如你将一个EXE换掉扩展名来转。
lyhoo163 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sailxia 的回复:]
每一种图片都有自己的独特格式的:

Delphi(Pascal) code
function ImageMIMEType(Source: string): string;
var
Mem: TMemoryStream;
Buffer: Word;
i: integer;
const
IMG_CLASS_UNKNOWN = 'unknown';
……
[/Quote]

帮顶。。。
Frank.WU 2011-03-10
  • 打赏
  • 举报
回复
每一种图片都有自己的独特格式的:
function ImageMIMEType(Source: string): string; 
var
Mem: TMemoryStream;
Buffer: Word;
i: integer;
const
IMG_CLASS_UNKNOWN = 'unknown';
IMG_CLASS_ERROR = 'error';
IMG_CLASS_JPEG = 'image/jpeg';
IMG_CLASS_BITMAP = 'image/bmp';
IMG_CLASS_GIF = 'image/gif';
IMG_CLASS_PNG = 'image/png';
IMG_CLASS_PCX = 'image/pcx';
IMG_CLASS_PSD = 'image/psd';
IMG_CLASS_RAS = 'image/ras';
IMG_CLASS_SGI = 'image/sgi';
IMG_CLASS_TIFF = 'image/tiff';

begin
Mem := TMemoryStream.Create;

try
Mem.LoadFromFile(Source);
Mem.Position := 0;
if Mem.Size = 0 then
begin
//错误
Result := IMG_CLASS_ERROR;
Exit;
end;

Mem.ReadBuffer(Buffer, 2);

if Buffer = $4D42 then
Result := IMG_CLASS_BITMAP
else
if Buffer = $D8FF then
Result := IMG_CLASS_JPEG
else
if Buffer = $4947 then
Result := IMG_CLASS_GIF
else
if Buffer = $050A then
Result := IMG_CLASS_PCX
else
if Buffer = $5089 then
Result := IMG_CLASS_PNG
else
if Buffer = $4238 then
Result := IMG_CLASS_PSD
else
if Buffer = $A659 then
Result := IMG_CLASS_RAS
else
if Buffer = $DA01 then
Result := IMG_CLASS_SGI
else
if Buffer = $4949 then
Result := IMG_CLASS_TIFF
else
Result := IMG_CLASS_UNKNOWN;


finally

Mem.Free; //释放内存流对象

end;
end;
dinoalex 2011-03-10
  • 打赏
  • 举报
回复
TImage或TBitmap或其它第三方(png,gif),A(jpg)导入后,B(bitmap)生成,然后load或assign,最后save,就行了

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧