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

Вниз

TBitmap   Найти похожие ветки 

 
Vitas2   (2002-08-11 08:33) [0]

Подскажете как в Bitmap загрузить файл формата JPG?

Я использую следующий код

........

uses ..., jpeg, ...;

........

var
Bitmap : TBitmap;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile (FileName);

........

то возникает ошибка при попытке открытия файла формата JPG.
А компонент TImage поле подключения модуля jpeg справляется с этой
звдачей.
И еще подскажите как загрузить другие форматы.

Заранее спасибо.


 
Prooksius   (2002-08-11 10:25) [1]

Эта процедура преобразует загруженный JPEG в Bitmap.
Загрузить JPEG надо в TJPEGImage или подобный.

procedure GetBitmapFromImg(PhotoPicture: TPicture; Bitmap: TBitmap);
begin
if PhotoPicture.Graphic is TBitmap then begin
Bitmap.Assign(PhotoPicture.Bitmap);
end else if PhotoPicture.Graphic is TGIFImage then begin
Bitmap.Assign((PhotoPicture.Graphic as TGIFImage).Frames[0].Bitmap)
end else if PhotoPicture.Graphic is TJPEGImage then begin
(PhotoPicture.Graphic as TJPEGImage).DIBNeeded;
Bitmap.Assign(PhotoPicture.Graphic);
end else if PhotoPicture.Graphic is TMetafile then begin
Bitmap.Width := PhotoPicture.Metafile.Width;
Bitmap.Height := PhotoPicture.Metafile.Height;
Bitmap.Canvas.Draw(0, 0, PhotoPicture.Metafile);
end else if PhotoPicture.Graphic is TIcon then begin
Bitmap.Width := PhotoPicture.Icon.Width;
Bitmap.Height := PhotoPicture.Icon.Height;
Bitmap.Canvas.Draw(0, 0, PhotoPicture.Icon);
end;
end;


Можно также загрузить картинку в Stream и из него - нарисовать на Bitmap. Вот процедура (немного другая, но принцип тот же), делающая это:

procedure BLOBToPicture(BlobField: TBlobField; Picture: TPicture);
var
StrStream: TStringStream;
StreamStr: string;
GIFImage: TGIFImage;
JPEGImage: TJPEGImage;
begin
StrStream := TStringStream.Create(StreamStr);
BlobField.SaveToStream(StrStream);
StrStream.Position := 0;
if CompareText(Copy(StrStream.DataString, 0, 2), "BM") = 0 then begin
Picture.Assign(BlobField);
end else if CompareText(Copy(StrStream.DataString, 0, 3), "GIF") = 0 then begin
GIFImage := TGIFImage.Create;
GIFImage.LoadFromStream(StrStream);
Picture.Bitmap.Canvas.Draw(0, 0, GIFImage);
GIFImage.Free;
end else if CompareText(Copy(StrStream.DataString, 7, 4), "JFIF") = 0 then begin
JPEGImage := TJPEGImage.Create;
JPEGImage.ProgressiveDisplay := True;
if JPEGImage.PixelFormat = jf24bit then Picture.Bitmap.PixelFormat := pf24bit
else Picture.Bitmap.PixelFormat := pf8bit;
JPEGImage.LoadFromStream(StrStream);
Picture.Bitmap.Width := JPEGImage.Width;
Picture.Bitmap.Height := JPEGImage.Height;
Picture.Bitmap.Canvas.Draw(0, 0, JPEGImage);
JPEGImage.Free;
end else Picture.Assign(nil);
StrStream.Free;
end;


 
PC Maniac   (2002-08-12 12:14) [2]

У tbitmap есть метод DRAW, предназначенный для рисования на канве битмапа. Загрузи jpeg в tjpegimage и рисуешь его на битмапе. Не забудь в конце удалить (free) объект tjpegimage.



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

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

Наверх




Память: 0.45 MB
Время: 0.006 c
1-71255
KPY
2002-08-12 06:49
2002.08.22
Помогите с новым типом


3-71059
Sedunov Vitaly
2002-08-02 12:08
2002.08.22
InstallShield Express+SQL Server


4-71429
IKarikh
2002-06-19 18:59
2002.08.22
Семафоры


6-71292
rem_
2002-06-13 10:03
2002.08.22
Послать почту


7-71408
inc(665)
2002-06-09 11:17
2002.08.22
Explorer.exe





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский