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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2010, 16:50   #31
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

А вы немогли бы мне кодик написать сами, я незнаю как вообще обращаться к Twain. И если можно скажите что почитать чтобы понять логику программирования в этом направлении.
По коментам в проге я понял что указать источник нужно вот так
Цитата:
TWAIN_SelectImageSource(Handle);
А вот что дальше писать, для меня пока тёмный лес(.
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 01.01.2010 в 16:54.
Herly вне форума Ответить с цитированием
Старый 01.01.2010, 17:09   #32
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Вот, всё как просили: Twain1.rar
Сначала указывайте нужный источник и всё. Потом можете сканировать.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.01.2010, 17:13   #33
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

А можно как-то убрать выборку сурса, тупо жать кнопочку и чтобы открывалось окно, которое идёт в дровах сканера любого? А если таковых нет, тогда уже виндоусовские.(и вывод длины, ширины и кол-ва пикселей мне не нужен).
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 01.01.2010, 17:20   #34
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Цитата:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses MultiTWAIN;

{$R *.dfm}
var MyBitMap:TBitMap;
procedure TForm1.Button1Click(Sender: TObject);
var dat:hBitMap; PInfo: PBitMapInfoHeader;
begin
MyBitMap:=TBitMap.Create;
TWAIN_SelectImageSource(Handle);
dat:=TWAIN_AcquireNative(Handle,0);
if dat <> 0 then begin
{Получаем указатель на область памяти содержащей DIB
данные и блокируем область памяти}
PInfo:=GlobalLock(dat);
{Разблокируем память}
GlobalUnlock(dat);
{Передаем в битовую матрицу графические данные}
{И устанавливаем перехват ошибок}
try
MyBitMap.Palette :=TWAIN_CreateDibPalette(dat);
MyBitMap.Width := Width;
MyBitMap.Height := Height;
TWAIN_DrawDibToDC(MyBitMap.Canvas.H andle,0,0,Width,Height,dat,0,0);
except
{Обрабатываем наиболее вероятную ошибку связанную с не хваткой ресурсов
для загрузки изображения}
on EOutOFResources do
MessageDlg('TBitMap: Нет ресурсов для загрузки изображения!',
mtError,[mbOk],0);
end;
{Отображаем графические данные}
//Canvas.Draw(10,10,MyBitMap);
Image1.Picture.Graphic:=MyBitMap;
{Освобождаем память занятую графическими данными}
TWAIN_FreeNative(dat);
end;
end;

end.
Вот, у меня получилось написать что мне нужно.
Подскажите к этому как сделать то, что я описал в посте выше.
А ещё у вас как-то идёт масштабирование и картинка получется по размеру лучше чем в моём коде. Хотелось бы чтобы картинка масштабировалась согласно размерам TImage.
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 01.01.2010 в 17:27.
Herly вне форума Ответить с цитированием
Старый 01.01.2010, 17:28   #35
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
А можно как-то убрать выборку сурса, тупо жать кнопочку и чтобы открывалось окно, которое идёт в дровах сканера любого? А если таковых нет, тогда уже виндоусовские.
Можно сделать и так, только нужно проверять наличие этих источников и потом уже делать операции с ними. Это нужно работать с компонентом, а я с ним никогда не работал. Хватаю всё на лету.)) Поищите инфу про этот компонент, там думаю будет всё написано.
Цитата:
(и вывод длины, ширины и кол-ва пикселей мне не нужен).
Для этого просто удалите строчки когда, которые выводят эти данные.
Цитата:
Хотелось бы чтобы картинка масштабировалась согласно размерам TImage.
Установите у компонента Image свойство Stretch:=True;
Всегда рад помочь!

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

А можете хотя бы подсказать как сделать масштабирование сканированной картинки в зависимости от размера Image. А то щас получается 1-на часть изображения ложится на вторую...
Вот пример сканирования одного листика в клеточку(целикового).
Изображения
Тип файла: jpg Клетка.jpg (28.3 Кб, 121 просмотров)
Если всё откладывать на потом, то потом будет всё.

Последний раз редактировалось Herly; 01.01.2010 в 17:37.
Herly вне форума Ответить с цитированием
Старый 01.01.2010, 17:42   #37
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
А можете хотя бы подсказать как сделать масштабирование сканированной картинки в зависимости от размера Image.
В посте 35 я написал.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 01.01.2010, 17:56   #38
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Цитата:
on EOutOFResources do
MessageDlg('TBitMap: Нет ресурсов для загрузки изображения!',
mtError,[mbOk],0);
end;
{Отображаем графические данные}
Image1.Stretch:=true;
Image1.Canvas.Draw(10,10,MyBitMap);
Image1.Picture.Graphic:=MyBitMap;
{Освобождаем память занятую графическими данными}
TWAIN_FreeNative(dat);
end;
end;
Вот что я изменил, результат не поменялся
Изображения
Тип файла: jpg Клетка.jpg (9.7 Кб, 123 просмотров)
Если всё откладывать на потом, то потом будет всё.
Herly вне форума Ответить с цитированием
Старый 01.01.2010, 18:00   #39
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

А у Image свойство Image1.AutoSize:=False;? Если нет, то надо изменить на False. А если надо пропорционально, то есть свойство Image1.Proportional.
Всегда рад помочь!

Последний раз редактировалось Terran; 01.01.2010 в 18:02.
Terran вне форума Ответить с цитированием
Старый 01.01.2010, 18:01   #40
Herly
Форумчанин
 
Регистрация: 07.11.2009
Сообщений: 118
По умолчанию

Цитата:
Сообщение от Terran Посмотреть сообщение
А у Image свойство Image1.AutoSize:=False;? Если нет, то надо изменить на False.
У меня стоит свойство False, на картинке приведённой в посте выше я так понял рисунок вообще выводился на холст формы...
мб можно как то с этим замутить:
Цитата:
Image1.Canvas.StretchDraw()
Только там на первом месте значение TRect, а я не очень понимаю что там писать.
Вот написал так:
Цитата:
Image1.Canvas.StretchDraw(Image1.Cl ientRect,MyBitMap);
Результат не поменялся.
Если всё откладывать на потом, то потом будет всё.

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу найти драйвер для сканера Mustek BearPaw 1200CU Plus мотя Компьютерное железо 5 04.05.2010 12:49
Подскажите нащёт Timage. Extez1 Помощь студентам 3 19.04.2009 15:55
ПО для сканера milancrash Компьютерное железо 1 31.03.2009 08:57
добавить TImage в Tlistbox ZhekON Общие вопросы Delphi 1 20.02.2008 23:19