Текущий архив: 2008.10.12;
Скачать: CL | DM;
Вниз
Вывод фотографий Найти похожие ветки
← →
silver222 (2008-08-20 14:01) [0]Посоветуйте компонент (алгоритм) для показа фотографий. Нужно выводить фотографии из заданных папок
← →
oldman © (2008-08-20 14:03) [1]TImage устроит?
Какой еще алгоритм?
← →
silver222 (2008-08-20 14:13) [2]>oldman © (20.08.08 14:03) [1]
>TImage устроит?
Возможно и устроит, но мне нужно сразу все фотографии находящиеся в папке выводить. Их количество в папках разное. Подскажите как это реализовать
← →
Vlad Oshin © (2008-08-20 14:14) [3]findfirst/next
← →
brother © (2008-08-20 14:14) [4]> находящиеся в папке выводить.
куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, вопрос переформулируй...
← →
Vlad Oshin © (2008-08-20 14:15) [5]a:array of TImage
a[n]=то что найдено findfirst/next
a[n].размеры = посчитать
← →
Германн © (2008-08-20 14:16) [6]
> но мне нужно сразу все фотографии находящиеся в папке выводить.
Монитор треснет :)
← →
silver222 (2008-08-20 14:24) [7]>brother © (20.08.08 14:14) [4]
>куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, >вопрос переформулируй...
Вывод на форму, чтобы пользователь мог увидеть что у него в папке за фотографии. Размер ясно что уменьшеный, но будет задаваться пользователю возможность изменения масштаба просмотра изображений. Слайдшоу это уже следующий этап, если есть идеи и советы тоже готов выслушать
← →
Amoeba © (2008-08-20 14:25) [8]
> silver222 (20.08.08 14:24) [7]
Очередной велосипед изобретаем?
← →
brother © (2008-08-20 14:27) [9]тогда тебе уже ответили в [1], [3], [5]! ищещь в папке нужные файлы, загоняешь их в массив, потом рисуешь их в TImage...
зы или ты готовый код ждешь?
← →
brother © (2008-08-20 14:29) [10]> Очередной велосипед изобретаем?
нет, необходимость может и нужная, но код настолько тривиален, и если человек его не в силах реализовать даже с гуглом, имхо ему не программировать надо, а основы изучать...
← →
oldman © (2008-08-20 14:30) [11]
> silver222 (20.08.08 14:24) [7]
> Вывод на форму, чтобы пользователь мог увидеть что у него
> в папке за фотографии.
А стандартный "проводник" уже не катит?
Надо свои проги писать?
← →
Vlad Oshin © (2008-08-20 15:04) [12]
> А стандартный "проводник" уже не катит?
точно.
Можно же ShellExecute open папки сделать. Вид только эскизный чтоб был
вообще одна строка кода :)
← →
oldman © (2008-08-20 15:55) [13]
> Vlad Oshin © (20.08.08 15:04) [12]
И ведь при двойном клике увеличение сработает :)
← →
Vlad Oshin © (2008-08-20 16:08) [14]
> oldman © (20.08.08 15:55) [13]
и осталось удалить лишнее звено - project1.exe
← →
ifrau (2008-08-20 16:19) [15]var
Form1: TForm1;
searchResult : TSearchRec;
i: integer;
FileCount : integer;
ArrJPEG : Array of TJPEGImage;
ArrTabSheet : Array of TTabSheet;
ArrScrollBox : Array of TScrollBox;
ArrImage : Array of TImage;
ArrLabel : Array of TLabel;
PC: TPageControl ;
JPEGWidth : Array of integer;
JPEGHeight : Array of integer;
NumCurrPage : integer;
ArrCurrJPEGWidth: Array of integer;
ArrCurrJPEGHeight: Array of integer;
ArrFileName : Array of string;
LengthImageArray : integer;
.................................
procedure TForm1.bLoadClick(Sender: TObject);
var
counter: integer;
begin
counter:=0;
FileCount:=0;
LengthImageArray:=0;
// Ïûòàåìñÿ íàéòè ïðàâèëüíûå ôàéëû, ñîîòâåòñòâóþù&# 232;å Unit1.d* â òåêóùåì êàòàëîãå
if FindFirst("*.jpg", faAnyFile, searchResult) = 0 then
begin
repeat
FileCount:=FileCount+1;
// ShowMessage("Èìÿ ôàéëà = "+searchResult.Name);
// ShowMessage("Ðàçìåð ôàéëà = "+IntToStr(searchResult.Size));
until FindNext(searchResult) <> 0;
// Äîëæåí îñâîáîäèòü ðåñóðñû, èñïîëüçóåìûå ýòèìè óñïåøíûìè, ïîèñêàìè
FindClose(searchResult);
if FileCount = 0 then
begin
ShowMessage("Ôàéëû íå íàéäåíû!!!");
end
else
begin
ShowMessage("Íàéäåíî " + IntToStr(FileCount) + " ôàéëîâ.");
if FindFirst("*.jpg", faAnyFile, searchResult) = 0 then
begin
SetLength(ArrJPEG, FileCount);
SetLength(ArrTabSheet, FileCount);
SetLength(ArrScrollBox, FileCount);
SetLength(ArrImage, FileCount);
SetLength(ArrLabel, FileCount);
SetLength(JPEGWidth, FileCount);
SetLength(JPEGHeight, FileCount);
SetLength(ArrCurrJPEGWidth, FileCount);
SetLength(ArrCurrJPEGHeight, FileCount);
SetLength(ArrFileName, FileCount);
// ShowMessage(" Arrayes initialized ");
LengthImageArray:= FileCount;
repeat
FileCount:=FileCount+1;
// ShowMessage("Èìÿ ôàéëà = "+searchResult.Name);
// ShowMessage("Ðàçìåð ôàéëà = "+IntToStr(searchResult.Size));
ArrJPEG[counter]:=TJPEGImage.Create;
ArrJPEG[counter].LoadFromFile(searchResult.Name);
ArrFileName[counter]:= searchResult.Name;
JPEGWidth[counter]:= ArrJPEG[counter].Width;
JPEGHeight[counter]:= ArrJPEG[counter].Height;
// ShowMessage("JPEG.Height = " + IntToStr(ArrJPEG[counter].Height) + ", JPEG.Width = " + IntToStr(ArrJPEG[counter].Width));
counter:=counter+1;
until FindNext(searchResult) <> 0;
// Äîëæåí îñâîáîäèòü ðåñóðñû, èñïîëüçóåìûå ýòèìè óñïåøíûìè, ïîèñêàìè
FindClose(searchResult);
end;
end;
end;
PC:= TPageControl.Create(nil);
PC.Parent:= Panel1;
PC.Align:= alClient;
//ShowMessage(" PC created ");
for i:=0 to LengthImageArray-1 do
begin
ArrTabSheet[i]:= TTabSheet.Create(PC);
ArrTabSheet[i].Caption := "¹ "+IntToStr(i + 1) + " - " + ArrFileName[i];
ArrTabSheet[i].Width := 50;
ArrTabSheet[i].Height := 20;
ArrTabSheet[i].PageControl:= PC;
ArrLabel[i]:= TLabel.Create(Panel1);
ArrLabel[i].Caption:= "33454554 _ " + IntTostr(i);
ArrLabel[i].Parent :=ArrTabSheet[i];
ArrScrollBox[i]:= TScrollBox.Create(Panel1);
ArrScrollBox[i].Parent :=ArrTabSheet[i];
ArrScrollBox[i].Align:= alClient;
ArrScrollBox[i].HorzScrollBar.Tracking:= true;
ArrScrollBox[i].HorzScrollBar.Range:=JPEGWidth[i];
ArrScrollBox[i].VertScrollBar.Range:=JPEGHeight[i];
ArrImage[i]:= TImage.Create(Panel1);
ArrImage[i].Parent :=ArrScrollBox[i];
ArrImage[i].Width:= ArrJPEG[i].Width;
ArrImage[i].Height:= ArrJPEG[i].Height;
ArrImage[i].Stretch := true;
ArrImage[i].Align:= alClient;
ArrImage[i].AutoSize:=true;
ArrImage[i].Proportional:= true;
ArrImage[i].Picture.Assign(ArrJPEG[i]);
ArrCurrJPEGWidth[i]:= JPEGWidth[i];
ArrCurrJPEGHeight[i]:= JPEGHeight[i];
bPrint.Enabled:= true;
bSmall.Enabled:= true;
bBig.Enabled:= true;
bRename.Enabled:= true;
bDel.Enabled:= true;
end;
end;
← →
oldman © (2008-08-20 16:21) [16]
> ifrau (20.08.08 16:19) [15]
Месье знает толк в извращениях!!!
(бурные аплодисменты, переходящие в овацию)
← →
Омлет (2008-08-20 17:35) [17]> brother © (20.08.08 14:29) [10]
> но код настолько тривиален
Это как сказать. Сразу видно, что ты подобную задачу не делал.
Чтобы работало быстро и правильно, надо много думать и много чего реализовывать.
← →
Andy BitOff © (2008-08-20 17:49) [18]> Омлет (20.08.08 17:35) [17]
Да ладно. GDI+ и GetThumbnailImage()
А покопавшись, можно вообще на этом сайте найти: http://delphimaster.net/view/8-1187098476/
← →
Anatoly Podgoretsky © (2008-08-20 18:03) [19]> Германн (20.08.2008 14:16:06) [6]
Не треснет, теоритически можно вывести в среднем 1280х1024 фотографии. Не думаю, что у него столько есть, ведь здесь же никаких пальцев не хватит, истираются
← →
brother © (2008-08-21 04:19) [20]> Это как сказать. Сразу видно, что ты подобную задачу не
> делал.
Самый простой код ;)
Страницы: 1 вся ветка
Текущий архив: 2008.10.12;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.019 c