Сообщение от DenNik
вот попробуй. Только при запуске из-под Делфи он выдаст ошибку. Просто я не помню как отключить контроль. Поэтому запускай из проводника
Delphi | ||
|
СПАСИБО!!!! работает, но ошибку из делфи и правда выдает…
блин теперь запнулся на том как это все в цикл поставить чтобы все файлы в директории перебрать
я пытаюсь сделать так
Delphi | ||
|
в поле Edit4 ввожу сколько в папке zaga файлов
все файлы имеют имя от 0 и тд 0.jpg , 1.jpg ….
но почему то файлы не перебирает а берет один тот что указал в поле Edit4
Добавлено через 4 часа 12 минут
блин чето вообще запутался…
каким то волшебным образом все работало, только не получалось в цикл загнать
сейчас запускаю прогу опять вылетает
голова пухнет….
подскажи пожалуйста
NewFName:= path + ‘govno’ + ExtractFileName(s[i]);
MoveFile(PChar(s[i]),PChar(NewFName));
мне надо в переменные добавить
NewFName это как я понимаю будет String
а вот тут PChar(s[i])
s и i что это и откуда беруться?
Jpeg error 53 delphi
В MSSQL есть BLOB поле под названием «Picture». Нужно получить и сохранить его в виде JPEG файла.
Делаю так:
(FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);
Файл нормально создается, но не открывается ни одним просмотрщиком картинок. Вероятно, файл создается с «неправильной» структурой.
В чем тут может быть дело?
Спасибо.
← →
DVM © ( 2008-08-29 10:50 ) [1]
> В чем тут может быть дело?
в том что он уже в базе лежит в неправильном формате
← →
Vlad Oshin © ( 2008-08-29 11:02 ) [2]
так что-нибудь показывает?
Image1.Picture.Bitmap.Assign(TBLOBField(Table1.Fields[1]));
← →
Ega23 © ( 2008-08-29 11:07 ) [3]
> Вероятно, файл создается с «неправильной» структурой.
> В чем тут может быть дело?
Из базы выгружаешь правильно. Значит там лежит некорректный jpeg. Или вообще не jpeg.
← →
Плохиш © ( 2008-08-29 11:12 ) [4]
> mefodiy (29.08.08 10:48)
> В MSSQL есть BLOB поле под названием «Picture». Нужно получить
> и сохранить его в виде JPEG файла.
Хм, оригинально, какой-нибуть ворд-документ в виде jpeg файла :-))
автор, какие первые 4 байта в c:1.jpg?
← →
mefodiy ( 2008-08-29 12:54 ) [6]
Вообще-то это БД от Navision. В самом Navision есть возможность выгружать картинки командами
Picture.EXPORT(«c:1.jpg»);
Picture.EXPORT(«c:1.bmp»);
И тот, и другой формат после выгрузки нормально просматривается всеми известными программами. Но в Delphi, если через TImage bmp загружается и просматриватся нормально, то jpg дает ошибку «JPEG error #53».
В то же время
1. (FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);
при выполнении ошибки не дает, но созданный файл при загрузке в TImage дает ту же ошибку «JPEG error #53».
2. Команда
Image1.Picture.Bitmap.Assign(TBLOBField(FieldByName(«Picture»)));
при выполнении дает ошибку:
«Bimap image is not valid»
← →
Ega23 © ( 2008-08-29 13:00 ) [7]
JPEG error #36 — Output File Error — Possibly out of disk space
JPEG error #51 — Quantization table not defined
JPEG error #52 — File is not a JPEG file
JPEG error #53 — Insufficient Memory
JPEG error #60 — Incomplete File
JPEG error #67 — Incomplete File
← →
mefodiy ( 2008-08-29 13:12 ) [8]
>JPEG error #53 — Insufficient Memory
Как лечить?
← →
stas © ( 2008-08-29 13:25 ) [9]
mefodiy (29.08.08 12:54) [6]
Рисунок у них в базе может хранится как угодно, допустим bmp сжатый раром или зипом.
загрузить(средствами delphi )
заранее читаемую(средствами delphi ) картинку и
выгрузить(средствами delphi )
← →
mefodiy ( 2008-08-29 14:02 ) [11]
>а если
>загрузить(средствами delphi )
>заранее читаемую(средствами delphi ) картинку и
>выгрузить(средствами delphi )
>, читается?
Все нормально читается
← →
Плохиш © ( 2008-08-29 14:15 ) [12]
> mefodiy (29.08.08 14:02) [11]
> Все нормально читается
А теперь попробуй выгрузить их с помощью
> Вообще-то это БД от Navision. В самом Navision есть возможность
> выгружать картинки командами
> Picture.EXPORT(«c:1.jpg»);
> Picture.EXPORT(«c:1.bmp»);
А потом долго подумай.
← →
Anatoly Podgoretsky © ( 2008-08-29 15:13 ) [13]
Значит надо делать средствами Navision, видимо хранится не в чистом, а в своем формате, при экспорте преобразовывается в нужный.
И где первые четыре байта файла?
← →
mefodiy ( 2008-08-29 15:42 ) [14]
>Значит надо делать средствами Navision, видимо хранится не в чистом, а в >своем формате, при экспорте преобразовывается в нужный.
База данных Navision построена на MSSQL и тип поля там BLOLB.
К сожалению, это надо делать именно средствами Дельфи.
Как могу посмотреть первые 4 байта?
> Как могу посмотреть первые 4 байта?
hex редактор
← →
Ega23 © ( 2008-08-29 15:47 ) [16]
> Как могу посмотреть первые 4 байта?
← →
stas © ( 2008-08-29 15:48 ) [17]
>mefodiy (29.08.08 15:42) [14]
В BLOB хранится может все что угодно
stas © (29.08.08 13:25) [9]
← →
Anatoly Podgoretsky © ( 2008-08-29 16:31 ) [18]
После «(FieldByName(«Picture») as TBlobField).SaveToFile(«c:1.jpg»);» посмотреть любым HEX редактором, результат сюда.
← →
Vlad Oshin © ( 2008-08-29 16:52 ) [19]
> Рисунок у них в базе может хранится как угодно, допустим
> bmp сжатый раром или зипом
кстати, да. Не понятно зачем, но может.
Может его сохранить как zip и натравить архиватор?
zip — просто, архиваторы теперь умные, сами попробуют определить что это.
← →
mefodiy ( 2008-08-29 19:46 ) [20]
Первые четыре байта:
01 44 7C 5A
← →
Amoeba © ( 2008-08-29 22:01 ) [21]
> mefodiy (29.08.08 19:46) [20]
>
> Первые четыре байта:
> 01 44 7C 5A
>
Это х.з., но только не JPEG: FFD8FFE1
← →
Ega23 © ( 2008-08-31 14:19 ) [22]
Это не jpeg. Вообще непонятно, что это такое.
Источник
Jpeg error 53 delphi
Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009
Репутация: нет
Всего: нет
Вопрос таки, хатя пратоптаный и перетоптанный в форуме но конкретнего решениа я нигде не нашол.
На форме лежит DBGrid, ADOConnection, ADOQuery,DataSourse и BitBtn.
В таблице ест поле в котором лежит фотографиа.
при нажатии на BitBtn виводится сообшение JPEG error #53.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Jpg: TJPegimage;
begin
if ADOQuery1.RecordCount=1 then
begin
Jpg:=TJPegImage.Create;
Jpg.Assign(DBGrid1.Columns.Items[7].Field);
Image1.Picture.LoadFromFile(DBGrid1.Columns.Items[7].Field.AsString);
может кто подскажет в чем моя проблема.
malxazibb |
|
||
M THandle |
Модератор: используйте подсветку кода! |
Это сообщение отредактировал(а) THandle — 26.8.2009, 13:56
Frees |
|
||
Эксперт Профиль Репутация: 16 |
|||
|
Alexeis |
|
|||
Амеба Профиль Репутация: 34
А почему это должно работать? TJPegImage может загрузить картинку из файла или потока. Метод Assign требует чтобы ему передали наследника TGraphic, т.е. объект VCL, а не сырые данные которые хранятся в blob поле. Советую поискать по форуму или гуглу «загрузка изображения из blob поля Delphi». Вопрос избитый нет смысла придумывать с нуля. Добавлено через 4 минуты и 7 секунд
TDBImage работает ТОЛЬКО с битмапом. Так что он тут никак не поможет. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
Данкинг |
|
||
Yersinia pestis Профиль Репутация: 11 Что содержится в поле таблицы — сама картинка или путь к ней? Если картинка (т.е. BLOB-поле), то ищи на форуме, как вставлять, даже я такую тему поднимал. И зачем нужно «Jpg.Assign(DBGrid1.Columns.Items[7].Field);» ? |
|||
|
Профиль
Группа: Участник
Сообщений: 14
Регистрация: 20.8.2009
Репутация: нет
Всего: нет
спасибо всем кто не поленилсая и дал совети.
пока сам помучаюс и потом опять присоединюс к форуму.
malxazibb |
|
||
|
Данкинг |
|
||||
Yersinia pestis Профиль Репутация: 11
1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.
[ Время генерации скрипта: 0.1115 ] [ Использовано запросов: 21 ] [ GZIP включён ] Источник Adblock |
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>I have a datasnap server with a servermethod to load a stream, im getting <strong style=»margin: 0px; padding: 0px; border: 0px;»>jpeg error #53[/b], my goal is get a thumbnail size, im getting the stream from BLOB fiel, load into a Bitmap object, then a create a thumbnail and convert that thumbnail to a stream back and send to the client
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>Error after loading the stream
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>I’m using XE7, MSSQL, VLC Datasnap Server
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>Server Side
<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»>function TDSServerMethods.GetImage(proid, Width, Height: Integer; out ImgStream: TStream): Boolean;
var
Bitmap,Bitmap2: FMX.Graphics.TBitMap;
scale: Single;
T:TStream;
stream: TStream;
begin
Result := False;
ImgStream := nil;
WITH SPPROC do
begin
close;
ProcedureName := ‘XXXXXX’;
Parameters.Clear ;
Parameters.CreateParameter(‘@ID’, ftInteger,pdInput, 0,proid );
Open;
Result := recordcount > 0;
end;
try
T := SPPROC.CreateBlobStream(SPPROC.FieldByName(‘file’),TBlobStreamMode.bmRead);
T.Seek( 0, TSeekOrigin.soBeginning );
T.Position := 0;
Bitmap := FMX.Graphics.TBitMap.Create;
Bitmap.LoadFromStream( T );
scale := RectF(0, 0, Bitmap.Width, Bitmap.Height).Fit(RectF(0, 0, 200, 200));
Bitmap2 := Bitmap.CreateThumbnail(Round(Bitmap.Width / scale), Round(Bitmap.Height / scale));
stream := TMemoryStream.Create;
stream.Position := 0;
Bitmap2.SaveToStream(stream);
stream.Seek( 0, TSeekOrigin.soBeginning );
stream.Position := 0;
ImgStream := stream
except
Exit(False);
end;
end;
</code></pre>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; color: #222222; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px;»>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>Client Side
<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»>procedure TFrmMain.Button3Click(Sender: TObject);
var
AImageStream: TStream;
jp: TJPEGImage;
begin
if ( DSServerMethods.GetImage(1038,0, 0, AImageStream)) then
begin
jp := TJPEGImage.Create;
AImageStream.Position := 0;
jp.LoadFromStream( AImageStream ); **here i got jpeg error #53**
Image1.Picture.Assign( jp );
end;
end;
</code></pre>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>in this line is the error <strong style=»margin: 0px; padding: 0px; border: 0px;»>jpeg error #53[/b] jp.LoadFromStream( AImageStream );
<p style=»margin: 0px 0px 1em; padding: 0px; border: 0px; font-size: 15px; clear: both; font-family: ‘Helvetica Neue’, Helvetica, Arial, sans-serif; line-height: 19.5px; white-space: normal; background-color: #ffffff;»>But, if i use this server function all work fine
<pre style=»margin-top: 0px; border: 0px; font-size: 13px; overflow: auto; width: auto; max-height: 600px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; word-wrap: normal; color: #222222; background-color: #eeeeee;»><code style=»margin: 0px; padding: 0px; border: 0px; font-family: Consolas, Menlo, Monaco, ‘Lucida Console’, ‘Liberation Mono’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Courier New’, monospace, sans-serif; white-space: inherit;»> function TDSServerMethods.GetImage(proid, Width, Height: Integer; out ImgStream: TStream): Boolean;
var
Bitmap,Bitmap2: FMX.Graphics.TBitMap;
scale: Single;
T:TStream;
stream: TStream;
begin
Result := False;
ImgStream := nil;
WITH SPPROC do
begin
close;
ProcedureName := ‘XXXXXX’;
Parameters.Clear ;
Parameters.CreateParameter(‘@ID’, ftInteger,pdInput, 0,proid );
Open;
Result := recordcount > 0;
end;
try
ImgStream := SPPROC.CreateBlobStream(SPPROC.FieldByName(‘file’),TBlobStreamMode.bmRead);
except
Exit(False);
end;
end;</code></pre>
#delphi #jpeg #delphi-10.3-rio
#delphi #jpeg
Вопрос:
Временные рамки.Изображение.Загрузка из файла (‘File.jpg ‘);
но я получил ошибку JPEG # 53! в чем причина этой ошибки?
Ответ №1:
Обычно это происходит, когда изображение в формате Jpeg загружается из Интернета и загрузка не завершена на 100%. Это может произойти даже с временным интервалом. К сожалению, у Jpeg нет контрольной суммы для проверки.
Единственное, что вы можете сделать, это всякий раз, когда выдается эта ошибка, перехватывать ее и отображать более отзывчивое сообщение типа «Изображение повреждено»..
Поскольку это вызывает ошибку:
procedure JpegError(cinfo: j_common_ptr); {$IFDEF LINUX} cdecl; export; {$ENDIF}
begin
raise EJPEG.CreateFmt(sJPEGError,[cinfo^.err^.msg_code]);
end;
где
sJPEGError = 'JPEG error #%d';
вы можете попытаться перехватить ошибку EJPEG и проверить наличие # 53 в сообщении.
Поскольку EJPEG наследуется от EInvalidGraphic, вы можете просто перехватить его с помощью
catch
on E: EInvalidGraphic do
begin
ShowMessage('Image file is corrupted.')
end;
end;
Комментарии:
1. Файлы JFIF / JPEG можно проверить на неполноту:
EOI
должен появиться сегмент . Кроме того, повреждение файла не ограничивается неудачными загрузками.
Ответ №2:
Это происходит с одним изображением в формате jpeg или со всеми файлами jpeg, которые вы пытаетесь использовать?
Ошибка JPEG # 53 ошибка появится из-за нехватки памяти.
Если файл поврежден, может возникнуть эта ошибка.
Таким образом, открытие этого изображения в paint или photoshop и повторное сохранение его в формате jpeg может решить проблему.
Ответ №3:
У меня также была ошибка # 53. Оказалось, что ошибка возникла только после того, как я ошибочно сохранил растровое изображение с расширением * .jpg . Очевидным решением было превратить это растровое изображение в формат jpeg и сохранить его затем :-).
Ответ №4:
Пожалуйста, попробуйте выполнить следующее, чтобы решить «ошибку JPEG # 53», если она возникает при этом утверждении TImage.Picture.LoadFromFile('File.jpg')
TImage.Picture.Bitmap.LoadFromFile('File.jpg');
Обратите внимание, что файл File.jpg должно существовать в указанном месте.
Комментарии:
1. Это просто неправильно. Как можно
TBitmap
ожидать загрузки JPEG?TBitmap
может загружать, хм, растровые изображения. [хотя отрицательный результат не мой]
Ответ №5:
моя проблема решена с помощью TAdvPicture componenet.
Комментарии:
1. Не могли бы вы упомянуть, как вы решили свою проблему с помощью TAdvPicture, я также получаю ошибку аналогичного типа, но изображение вообще не повреждено. Я могу просматривать данные изображения в SQLite и правильно извлекать изображение в другом программном обеспечении. Не уверен, почему я получаю
JPEG Error #53
2. TAdvPicture просто не вызовет ошибку, он отобразит изображение как можно лучше, а затем остановится. Я также вернулся к этому в качестве решения, поскольку я не могу остановить ошибку с помощью попытки… Кроме того, и я действительно не хочу менять код в Vcl. TAdvPicture является компонентом программного обеспечения TMS (это не реклама)
3. Если кому-то нужен компонент, можно было бы найти, если бы вы правильно решили эту проблему с достаточным объяснением, а затем рассказали о каком-то компоненте, у меня не было проблем, но это: вы просто описали проблему как вопрос, и вдруг вы находите компонент, и SHAZAM что-нибудь просто работает!!! Здесь это неправильно.
4. Даже не связывая компонент: 1.3 от 2003 и 10.7 от 2022