Конференция "Прочее" » Вывод фотографий [D6, XP]
 
  • silver222 (20.08.08 14:01) [0]
    Посоветуйте компонент (алгоритм) для показа фотографий. Нужно выводить фотографии из заданных папок
  • oldman © (20.08.08 14:03) [1]
    TImage устроит?

    Какой еще алгоритм?
  • silver222 (20.08.08 14:13) [2]
    >oldman ©   (20.08.08 14:03) [1]

    >TImage устроит?

    Возможно и устроит, но мне нужно сразу все фотографии находящиеся в папке выводить. Их количество в папках разное. Подскажите как это реализовать
  • Vlad Oshin © (20.08.08 14:14) [3]
    findfirst/next
  • brother © (20.08.08 14:14) [4]
    > находящиеся в папке выводить.

    куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, вопрос переформулируй...
  • Vlad Oshin © (20.08.08 14:15) [5]
    a:array of TImage

    a[n]=то что найдено findfirst/next
    a[n].размеры = посчитать
  • Германн © (20.08.08 14:16) [6]

    > но мне нужно сразу все фотографии находящиеся в папке выводить.

    Монитор треснет :)
  • silver222 (20.08.08 14:24) [7]
    >brother ©   (20.08.08 14:14) [4]

    >куда? размер должен быть оригинальный? слайдшоу? виш сколько вопросов, >вопрос переформулируй...

    Вывод на форму, чтобы пользователь мог увидеть что у него в папке за фотографии. Размер ясно что уменьшеный, но будет задаваться пользователю возможность изменения масштаба просмотра изображений. Слайдшоу это уже следующий этап, если есть идеи и советы тоже готов выслушать
  • Amoeba © (20.08.08 14:25) [8]

    > silver222   (20.08.08 14:24) [7]

    Очередной велосипед изобретаем?
  • brother © (20.08.08 14:27) [9]
    тогда тебе уже ответили в [1], [3], [5]! ищещь в папке нужные файлы, загоняешь их в массив, потом рисуешь их в TImage...
    зы или ты готовый код ждешь?
  • brother © (20.08.08 14:29) [10]
    > Очередной велосипед изобретаем?

    нет, необходимость может и нужная, но код настолько тривиален, и если человек его не в силах реализовать даже с гуглом, имхо ему не программировать надо, а основы изучать...
  • oldman © (20.08.08 14:30) [11]

    > silver222   (20.08.08 14:24) [7]
    > Вывод на форму, чтобы пользователь мог увидеть что у него
    > в папке за фотографии.


    А стандартный "проводник" уже не катит?
    Надо свои проги писать?
  • Vlad Oshin © (20.08.08 15:04) [12]

    > А стандартный "проводник" уже не катит?

    точно.

    Можно же ShellExecute open папки сделать. Вид только эскизный чтоб был
    вообще одна строка кода :)
  • oldman © (20.08.08 15:55) [13]

    > Vlad Oshin ©   (20.08.08 15:04) [12]


    И ведь при двойном клике увеличение сработает :)
  • Vlad Oshin © (20.08.08 16:08) [14]

    > oldman ©   (20.08.08 15:55) [13]

    и осталось удалить лишнее звено - project1.exe
  • ifrau (20.08.08 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 © (20.08.08 16:21) [16]

    > ifrau   (20.08.08 16:19) [15]


    Месье знает толк в извращениях!!!
    (бурные аплодисменты, переходящие в овацию)
  • Омлет (20.08.08 17:35) [17]
    > brother ©   (20.08.08 14:29) [10]
    > но код настолько тривиален

    Это как сказать. Сразу видно, что ты подобную задачу не делал.
    Чтобы работало быстро и правильно, надо много думать и много чего реализовывать.
  • Andy BitOff © (20.08.08 17:49) [18]
    > Омлет   (20.08.08 17:35) [17]

    Да ладно. GDI+ и GetThumbnailImage()

    А покопавшись, можно вообще на этом сайте найти: http://pda.delphimaster.net/?id=1187098476&n=7
  • Anatoly Podgoretsky © (20.08.08 18:03) [19]
    > Германн  (20.08.2008 14:16:06)  [6]

    Не треснет, теоритически можно вывести в среднем 1280х1024 фотографии. Не думаю, что у него столько есть, ведь здесь же никаких пальцев не хватит, истираются
  • brother © (21.08.08 04:19) [20]
    > Это как сказать. Сразу видно, что ты подобную задачу не
    > делал.

    Самый простой код ;)
 
Конференция "Прочее" » Вывод фотографий [D6, XP]
Есть новые Нет новых   [134441   +9][b:0][p:0.001]