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

Вниз

JPG -> BMP   Найти похожие ветки 

 
Serg101   (2004-01-05 15:45) [0]

читаю стандартными средствами Delphi картинку в формате JPG затем перевожу в BMP для сохранения в базе и в заголовке НЕТ
ДАННЫХ о DPI
че делать?

JI := TJPEGImage.Create;
try
JI.LoadFromFile(OpenDialog1.FileName);
imRastr.Picture.Bitmap.Assign(JI);
finally
JI.Free;
end;

with imRastr.Picture.Bitmap do begin
GetDIB(Handle, Palette, BitmapInfo, DIBS);
BitmapInfo.bmiHeader.biXPelsPerMeter почему-то равен 0
end;


 
Stas   (2004-01-05 15:52) [1]

А почему Jpeg не хранишь ?


 
Ega23   (2004-01-05 15:57) [2]

procedure TTPLObjectsIni.SetPhoto(BitMap: TBitMap;
PhotoSection: TPhotoSection; Value: String);
var
JPG:TJpegImage;
begin
if PhotoSection.Visible<>1 then Exit;
JPG:=TJpegImage.Create;
JPG.LoadFromFile(ExtractFilePath(ParamStr(0))+Value);
Bitmap.Canvas.StretchDraw(Rect(PhotoSection.Left,PhotoSection.Top,
PhotoSection.Left+PhotoSection.Width,
PhotoSection.Top+PhotoSection.Height),JPG);
JPG.Free;
end;


 
Ega23   (2004-01-05 15:58) [3]

Да, почему не сам JPEG хранишь? Места-то меньше..


 
alex_***   (2004-01-05 15:59) [4]

у тебя картинка-то в bmp конвертится нормально?


 
Ega23   (2004-01-05 16:01) [5]


> imRastr.Picture.Bitmap.Assign(JI);

Вот эта сточка опасение внушает.


 
REA   (2004-01-05 16:12) [6]

А в JPEG эти данные есть?


 
alex_***   (2004-01-05 16:13) [7]

с TImage я делал так:
Image1.Picture.Assign(jpg);

> imRastr.Picture.Bitmap.Assign(JI);

может и здесь лишнее звено выбросить?


 
icWasya   (2004-01-05 16:20) [8]

если вместо

imRastr.Picture.Bitmap.Assign(JI);

сделать

imRastr.Picture.Assign(JI);

то в imRastr.Picture окажется не BitMap, а JPeg, что автору может быть не нужно


 
Ega23   (2004-01-05 16:25) [9]


> imRastr.Picture.Assign(JI);
>
> то в imRastr.Picture окажется не BitMap, а JPeg, что автору
> может быть не нужно

Правильно, но у TImage Canvas в published вынесен, а дальше через CopyRect на виртуальный Bitmap изображение перенести можно.


 
alex_***   (2004-01-05 16:26) [10]

>imRastr.Picture окажется не BitMap, а JPeg
не факт. Я думаю Bitmap будет заполняться. Но проверять время нет.


 
Serg101   (2004-01-06 10:39) [11]

Самое главное что мне нужно это выиащить сведения о DPI для BMP идея описана выше а для JPG это не проходит,
Хранить JPG в базе данных не получилось говорит что можно хранить только BMP база InterBase


 
Ega23   (2004-01-06 10:45) [12]


> Самое главное что мне нужно это выиащить сведения о DPI
> для BMP идея описана выше а для JPG это не проходит,

Так тебе структуру BMP-шки надо что-ли?


> Хранить JPG в базе данных не получилось говорит что можно
> хранить только BMP база InterBase

Хоть с InterBase делов не имел, но вжисть не поверю, что туда BLOB закачать нельзя.


 
REA   (2004-01-06 12:10) [13]

>Самое главное что мне нужно это выиащить сведения о DPI для BMP
>идея описана выше а для JPG это не проходит

Чтобы что-то вытащить надо что-то установить. Если этого нет в JPG, то откуда возьмется в BMP?


 
alex_***   (2004-01-06 12:15) [14]

возьмется при конвертации JPG->BMP


 
Serg101   (2004-01-06 15:49) [15]

>Чтобы что-то вытащить надо что-то установить. Если этого нет в JPG, то откуда возьмется в BMP?

В jpg такая информация содержится но при конвертации описанным выше способом на теряется


 
REA   (2004-01-06 16:01) [16]

Если она там есть, почему бы не хранить в JPG?
Нет ли возможности установить ее в BMP вручную (это ведь свойство формата, нет гарантии что разработчики Delphi озаботились копированием этого свойства)?


 
Serg101   (2004-01-08 10:56) [17]

в каком формате хранить не важно главное у нет полной инфо по файл а точне DPI.

>Если она там есть, почему бы не хранить в JPG?
>Нет ли возможности установить ее в BMP вручную (это ведь >свойство формата, нет гарантии что разработчики Delphi >озаботились копированием этого свойства)?

в этом проблема что при
imRastr.Picture.Bitmap.Assign(JI);
dpi файла JPG не переписывается в BMP тоесть если взять файл в JPG и перевести в BMP то dpi не переносится - видно это фишка такая, а мне то какраз и надо узнать dpi в JPG файле и записать его в BMP.


 
Ega23   (2004-01-08 11:07) [18]


> Serg101 (08.01.04 10:56) [17]

Ну так возьми и побайтно считай.
Структуры JPEG и BMP в сети поищи. Могу на мыло документы выслать.


 
Serg101   (2004-01-08 11:24) [19]

>Ну так возьми и побайтно считай.
>Структуры JPEG и BMP в сети поищи. Могу на мыло документы выслать.


--------------------------------------------------------------------------------
вышли если нетрудно заранее благодарен,
всем спасибо.


 
Ega23   (2004-01-08 12:58) [20]


> вышли если нетрудно заранее благодарен,

hitman@52.ru - на этот адрес слать?


 
Андрей Сенченко   (2004-01-08 13:01) [21]

PROGRAM bmptojpg;

USES
Windows, Graphics, JPEG;

VAR
JPGpic: TJPEGImage;
BMPpic: TBitmap;
BMPName, JPGName : string;

BEGIN
If ParamCount = 2
Then
Begin
BMPName := ParamStr(1);
JPGName := ParamStr(2);
JPGpic := TJPEGImage.Create;
BMPpic := TBitmap.Create;
Try
BMPpic.LoadFromFile(BMPName);
JPGpic.Assign(BMPpic);
JPGpic.SaveToFile(JPGName);
Finally
JPGpic.Free;
BMPpic.Free;
End { Try }
End { Then }
Else
MessageBox(0,PChar("Необходимо запускать эту программу"+#13+"с параметрами :"+#13+"Имя файла.bmp Имя файла.jpg"),PChar("Внимание !"),MB_OK+MB_ICONSTOP);
END.


 
Андрей Сенченко   (2004-01-08 13:02) [22]

Ну или вот еще DLL-ка у меня есть

LIBRARY convert;
uses
Windows, Graphics, JPEG;

Procedure bmp2jpg(bmpname,jpgname : PChar); stdcall;
var
JPGpic: TJPEGImage;
BMPpic: TBitmap;
begin
JPGpic := TJPEGImage.Create;
BMPpic := TBitmap.Create;
Try
BMPpic.LoadFromFile(BMPName);
JPGpic.Assign(BMPpic);
JPGpic.SaveToFile(JPGName);
Finally
JPGpic.Free;
BMPpic.Free;
End { Try }
end;

Procedure jpg2bmp(bmpname,jpgname : PChar); stdcall;
var
JPGpic: TJPEGImage;
BMPpic: TBitmap;
begin
JPGpic := TJPEGImage.Create;
BMPpic := TBitmap.Create;
Try
JPGpic.LoadFromFile(JPGName);
BMPpic.Assign(JPGpic);
BMPpic.SaveToFile(BMPName);
Finally
JPGpic.Free;
BMPpic.Free;
End { Try }
end;

Exports
bmp2jpg,
jpg2bmp;
end.


 
Serg101   (2004-01-15 15:26) [23]

Всем спасибо, заработало!



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

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

Наверх





Память: 0.5 MB
Время: 0.018 c
14-83241
vid
2004-01-05 23:32
2004.01.26
как передать в качестве аргумента функции МАССИВ ?


9-83085
loto
2003-05-29 18:33
2004.01.26
(OpenGL) модули математических действий с матрицами


14-83242
Qwet
2004-01-05 17:44
2004.01.26
Книги по Паскалю


6-83231
DelphiN!
2003-11-23 11:10
2004.01.26
Как проверить запущен ли уже сервер или нет?


1-83154
Hkr
2004-01-14 20:27
2004.01.26
Системное меню





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