Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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;
   // &#196;&#238;&#235;&#230;&#229;&#237; &#238;&#241;&#226;&#238;&#225;&#238;&#228;&#232;&#242;&#252; &#240;&#229;&#241;&#243;&#240;&#241;&#251;, &#232;&#241;&#239;&#238;&#235;&#252;&#231;&#243;&#229;&#236;&#251;&#229; &#253;&#242;&#232;&#236;&#232; &#243;&#241;&#239;&#229;&#248;&#237;&#251;&#236;&#232;, &#239;&#238;&#232;&#241;&#234;&#224;&#236;&#232;
   FindClose(searchResult);

   if FileCount = 0 then
      begin
        ShowMessage("&#212;&#224;&#233;&#235;&#251; &#237;&#229; &#237;&#224;&#233;&#228;&#229;&#237;&#251;!!!");
      end
      else
      begin
        ShowMessage("&#205;&#224;&#233;&#228;&#229;&#237;&#238;  " + IntToStr(FileCount) + " &#244;&#224;&#233;&#235;&#238;&#226;.");
        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("&#200;&#236;&#255; &#244;&#224;&#233;&#235;&#224; = "+searchResult.Name);
    //   ShowMessage("&#208;&#224;&#231;&#236;&#229;&#240; &#244;&#224;&#233;&#235;&#224; = "+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;
     // &#196;&#238;&#235;&#230;&#229;&#237; &#238;&#241;&#226;&#238;&#225;&#238;&#228;&#232;&#242;&#252; &#240;&#229;&#241;&#243;&#240;&#241;&#251;, &#232;&#241;&#239;&#238;&#235;&#252;&#231;&#243;&#229;&#236;&#251;&#229; &#253;&#242;&#232;&#236;&#232; &#243;&#241;&#239;&#229;&#248;&#237;&#251;&#236;&#232;, &#239;&#238;&#232;&#241;&#234;&#224;&#236;&#232;
     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 := "&#185; "+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
2-1220106974
Alral
2008-08-30 18:36
2008.10.12
Функция Recv и PChar


13-1121805388
NewWonder
2005-07-20 00:36
2008.10.12
C#: Borland or MS?


2-1220392769
Drone
2008-09-03 01:59
2008.10.12
Выпадающее Меню и другие вопросы


15-1219351890
TUser
2008-08-22 00:51
2008.10.12
Ширли-мырли


2-1220529187
KirillRepin
2008-09-04 15:53
2008.10.12
помогите с DBComboBox