Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Например:
type TImageType = (NoImage, Bmp, Gif, Gif89, Png, Jpg); function KindOfImage(Start: Pointer): TImageType; type ByteArray = array[0..10] of Byte; var PB: ^ByteArray absolute Start; PW: ^Word absolute Start; PL: ^DWord absolute Start; begin if PL^ = $38464947 then begin if PB^[4] = Ord('9') then Result := Gif89 else Result := Gif; end else if PW^ = $4D42 then Result := Bmp else if PL^ = $474E5089 then Result := Png else if PW^ = $D8FF then Result := Jpg else Result := NoImage; end; Пользоваться можно так: case KindOfImage(MemoryStream.Memory) of ... Эта тема была разделена из темы "Формат изображения в TMemoryStream" |
Сообщ.
#2
,
|
|
|
Для тех, кого смущает absolute:
type TImageType = (NoImage, Bmp, Gif, Gif89, Png, Jpg); function KindOfImage(Start: Pointer): TImageType; begin if LongWord(Start^) = $38464947 then begin if (PChar(Start) + 4)^ = '9' then Result := Gif89 else Result := Gif; end else if Word(Start^) = $4D42 then Result := Bmp else if LongWord(Start^) = $474E5089 then Result := Png else if Word(Start^) = $D8FF then Result := Jpg else Result := NoImage; end; |