Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

проблема с расширением и его переменой   Найти похожие ветки 

 
SmikE   (2004-11-18 14:02) [0]

Есть вот такой код, записанный в обработчик кнопки:
s:=ExtractFileExt(opendialog1.FileName);
if s=".gif" then ConvertGIF; //Конвертирует gif в bmp, рабочий
if (s=".jpeg") or (s=".jpg") then ConvertJPG; //Конвертирует jpg в bmp, тоже в порядке
при работе с gif вылетает ошибка "invalid GIF signature"
а если поменять местами строчки кода, то JPEG Eror #53,что делать?


 
Ega23 ©   (2004-11-18 14:07) [1]

НЕЛЬЗЯ формат графических файлов определять по их расширению. Для этого сигнатура как раз существует.
Что-то типа этого:


type
TGraphicFormat=(gfUnknown, gfBMP, gfJPEG, gfGIF, gfTIFF);

function GetGraphicFormat(const FileName:String):TGraphicFormat;
var
Buffer: array[0..2] of Byte;
fs:TFileStream;
begin
Result:=gfUnknown;
try
  fs:=TFileStream.Create(FileName,fmOpenRead);
  fs.ReadBuffer(Buffer, 3);
  if (Buffer[0] = $49) and (Buffer[1] = $49) and (Buffer[2] = $2A) then Result:=gfTIFF;
  if (Buffer[0] = $42) and (Buffer[1] = $4D) then Result:=gfBMP;
  if (Buffer[0] = $FF) and (Buffer[1] = $D8) then Result:=gfJPEG;
  if (Buffer[0] = $47) and (Buffer[1] = $49) and (Buffer[2] = $46) then Result:=gfGIF;
finally
  fs.Free;
end;
end;


 
Digitman ©   (2004-11-18 14:08) [2]


> при работе с gif вылетает ошибка "invalid GIF signature"


значит в файле с gif-расширением отнюдь не данные в gif-формате


 
TUser ©   (2004-11-18 14:09) [3]


> НЕЛЬЗЯ формат графических файлов определять по их расширению

И тем не менее ВСЕ графические редакторы поступают именно так. Если переименовать gif в jpeg, то он от этого лучше открываться не станет, но считается, что если пользователь дошел до такой жизни - то это уж его проблемы.


 
SmikE   (2004-11-18 14:12) [4]

Проблемы возникают и при работе с НАСТОЯЩИМИ gif и JPG


 
TUser ©   (2004-11-18 14:15) [5]

Значит, у тебя проблема в ConvertJPG


 
Ega23 ©   (2004-11-18 14:35) [6]

И тем не менее ВСЕ графические редакторы поступают именно так. Если переименовать gif в jpeg, то он от этого лучше открываться не станет, но считается, что если пользователь дошел до такой жизни - то это уж его проблемы.

Не надо мне грязи! Переименуй bmp в pas и открой его через ACDSee.


 
SmikE   (2004-11-18 15:03) [7]

И всё-таки в процедурах ошибки нет, ну помогите плз


 
Digitman ©   (2004-11-18 17:08) [8]


> SmikE   (18.11.04 15:03) [7]


>  процедурах ошибки нет


только вот не надо уже здесь горбатого лепить !

по-твоему, сообщения

"invalid GIF signature"
"JPEG Eror #53"

выдает кто угодно, хоть святой дух, только не твои процедуры ? так что ли ?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
14-1100661404
Думкин
2004-11-17 06:16
2004.12.05
С днем рождения! 17 ноября!


1-1100678158
Ega23
2004-11-17 10:55
2004.12.05
TTreeNodes.Delete


4-1098457264
parent
2004-10-22 19:01
2004.12.05
Найти процедуру по адресу без отладчика


3-1099918293
LOMic
2004-11-08 15:51
2004.12.05
фильтрация в TDBGrigEh


1-1101049346
_Дельфин_
2004-11-21 18:02
2004.12.05
Фон для Explorer а





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский