Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2010, 11:55   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

мы копируем картинку (со всеми ее атрибутами: длина, ширина, формат, ...) или пиксели одной картинки в другую?
Код:
Image2.Picture.Bitmap.width:=Image1 .width;
Image2.Picture.Bitmap.height:=Image 2.height;
Image2.Picture.Bitmap.Canvas.copyrect
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 10.02.2010, 14:21   #12
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Хотелось бы с тем же форматом производить копирование.
А ещё я заметил что если взять картинку из интернета, через Paint сохранить как Bmp, а затем подгрузить её в image1 и скопировать в image2 то качество не теряется.
Поэтому я теперь начинаю думать что дело не в копировании, а в формате, который приходит со скаера.
Программно картинка со сканера добавляется так
Цитата:
TWAIN_DrawDibToDC(MyBitMap.Canvas.H andle,0,0,Width,Height,dat,0,0);
Image1.Picture.Graphic:=MyBitMap;
Image1.Picture.SaveToFile('C:\image .bmp');
Image1.Picture.LoadFromFile('C:\ima ge.bmp');
Может быть тут ошибка.

Скрин копирования изображения после сохранения в bmp через paint прилагается.
Если прописать следующие
Цитата:
Image2.Picture.Bitmap:=Image1.Pictu re.Bitmap
то картинка идёт без изменения качества. Я никак не пойму что не так.
Изображения
Тип файла: jpg Загрузка бмп.jpg (26.5 Кб, 123 просмотров)
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 10.02.2010 в 17:24.
Herly вне форума Ответить с цитированием
Старый 10.02.2010, 21:57   #13
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

В итоге решил эту неприятность так:
Цитата:
image2.picture.bitmap.height:=image 1.picture.bitmap.height
image2.picture.bitmap.width:=image1 .picture.bitmap.width
Но возникла новая добавляю изображение в БД как и раньше, но при обратной загрузке стала вылетать ошибка: "Bitmap Image is not valid"
С чем это связано, кто знает?
Вроде как в Blob поле базы Paradox можно поместить до 256 мб, а картинка весит 15 мб, значит переполнение не происходит, и тогда неясно в чём дело.
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 10.02.2010 в 22:09.
Herly вне форума Ответить с цитированием
Старый 11.02.2010, 17:12   #14
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Помогите пожалуйста разобраться, а то не хочется возвращаться к худшему качеству изображения.
Цитата:
Unp.Nimg1.Picture.Bitmap.Height:=Un p.Pimg1.Picture.Bitmap.Height;
Unp.Nimg1.Picture.Bitmap.Width:=Unp .Pimg1.Picture.Bitmap.Width;
Unp.Nimg1.Picture.Bitmap.Canvas.Cop yRect(Rect(0,0,Unp.Nimg1.Picture.Bi tmap.Width,Unp.Nimg1.Picture.Bitmap .Height),Unp.Pimg1.Picture.Bitmap.C anvas,Num);
Unp.ALimg1.Picture.Bitmap.Height:=U np.Pimg1.Picture.Bitmap.Height;
Unp.ALimg1.Picture.Bitmap.Width:=Un p.Pimg1.Picture.Bitmap.Width;
All.Top:=Num.Bottom+5;
All.Left:=trunc(BitM.Width/2);
All.Right:=unp.Pimg1.Picture.Bitmap .Width;
All.Bottom:=Unp.Pimg1.Picture.Bitma p.Height;
Unp.ALimg1.Picture.Bitmap.Canvas.Co pyRect(Rect(0,0,Unp.ALimg1.Picture. Bitmap.Width,Unp.ALimg1.Picture.Bit map.Height),Unp.Pimg1.Picture.Bitma p.Canvas,All);
Redraw();//поворот скопированной области
Unp.PGimg1.Picture.Bitmap.Height:=U np.ALimg1.Picture.Bitmap.Height;
Unp.PGimg1.Picture.Bitmap.Width:=Un p.ALimg1.Picture.Bitmap.Width;
Unp.PGimg1.Picture.Bitmap.Canvas.Co pyRect(Unp.PGimg1.Picture.Bitmap.Ca nvas.ClipRect,Unp.ALimg1.Picture.Bi tmap.Canvas,rect(0,trunc(Unp.ALimg1 .Picture.Bitmap.Height/5),trunc(Unp.ALimg1.Picture.Bitmap. Width/2.9),trunc(Unp.ALimg1.Picture.Bitma p.Height/1.5)));
Unp.ALimg1.Picture.Bitmap.Canvas.Co pyRect(Unp.ALimg1.Picture.Bitmap.Ca nvas.ClipRect,Unp.ALimg1.Picture.Bi tmap.Canvas,rect(trunc(Unp.ALimg1.P icture.Bitmap.Width/2.9),0,Unp.ALimg1.Picture.Bitmap.Wi dth,trunc(Unp.ALimg1.Picture.Bitmap .Height/1.5)));
Num,All-размеры областей которые я копирую в исходном Pimg1
Вот так происходит копирование нужных мне полей из главного (Pimg1), при этом качество остаётся отличным.
Заносится в БД следующим образом
Цитата:
Unp.Table1.Append;
Unp.Table1.Edit;
TblobField(Unp.Table1.FieldByName(' PhotoField')).Assign(Unp.ALimg1.Pic ture);
TblobField(Unp.Table1.FieldByName(' PhotoNum')).Assign(Unp.Nimg1.Pictur e);
TblobField(Unp.Table1.FieldByName(' PhotoP')).Assign(Unp.PGimg1.Picture );
Unp.Table1.Post;
Вывод происходит так:
Цитата:
Res.DBGrSR.SelectedIndex:=0;
Res.ImgPh.Picture.Assign(TBlobField (Res.DBGrSR.SelectedField));
Res.DBGrSR.SelectedIndex:=1;
Res.ImgNum.Picture.Assign(TBlobFiel d(Res.DBGrSR.SelectedField));
Res.DBGrSR.SelectedIndex:=2;
Res.ImgAll.Picture.Assign(TblobFiel d(Res.DBGrSR.SelectedField));
, где поле под индексом 0-PhotoP, 1-PhotoNum, 2-PhotoField.
В итоге выводится только изображение в ImgPh, а на осталные два выдаёт ошибку : "Bitmap Image is not valid"
Я пробовал после копирования дописывать
Цитата:
Unp.ALimg1.Picture.Bitmap.PixelForm at:=pf24bit;
Unp.Nimg1.Picture.Bitmap.PixelForma t:=pf24bit;
Unp.PGimg1.Picture.Bitmap.PixelForm at:=pf24bit;
Но это не помогло.
Подскажите что нужно сделать чтобы вывод изображения из БД проходил без ошибок(БД Paradox 7). Очень нужен хелп...
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 11.02.2010 в 17:17.
Herly вне форума Ответить с цитированием
Старый 11.02.2010, 20:08   #15
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Картинка стала нормально выводится когда понижаю количество цветов,
либо размер битмап, хотя исходная картинка спокойно добавляется и выводится.
Цитата:
Unp.ALimg1.Picture.Bitmap.PixelForm at:=pf8bit;
на сайте http://base.vingrad.ru/view/45-Paradox
указано что максимальный размер Blob поля 256 мб, картинка в целом в формате Bmp весит 20мб максимум, значит части её будут весить меньше.
И я никак немогу понять почему с уменьшением кол-ва цветов на пиксель->с уменьшением веса всё начинает нормально работать, разъясните пожалуйста.
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 11.02.2010 в 20:12.
Herly вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при копировании файла (*.mpg) Marsel737 Общие вопросы Delphi 1 16.12.2009 11:06
Почему ошибка при копировании? valerij Microsoft Office Excel 8 02.05.2009 01:49
потеря параметров при вызове формы из dll... Roof Общие вопросы Delphi 4 22.08.2008 22:08
Потеря данных при изменении рамера раздела Drandulet Софт 5 06.07.2008 07:52
Потеря переменной при выходи из процедуры Kaz Помощь студентам 3 07.06.2007 03:24