Форум: "Основная";
Текущий архив: 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.032 c