2012-01-16 3 views
0

간단하고 간단하게 작성하겠습니다 ... 이전에이 질문을했지만 답변을하지 않았습니다. 폴더에서 여러 이미지를 가져 와서 배열에 추가하고 싶습니다. 이 작업이 작동하지 않습니다. 누군가가 명시 적으로 수행 방법을 말해 줄 수 있습니까? 감사! 양식 부하에파일에서 이미지 배열로 여러 .jpg를 추가하십시오.

:

Private Sub Button1_Add(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim PictureArray As New List(Of Image) 
    For Each item As String In Directory.GetFiles("C:\Users\turcotd\Desktop\ITLPers", "*.jpg", IO.SearchOption.AllDirectories) 
     Dim _Image As Image = Image.FromFile(item) 
     PictureArray.Add(_Image) 
    Next 

    If (i < 6) Then 
     Dim pb As New PictureBox 
     Me.FlowLayoutPanel1.Controls.Add(pb) 
     pb.Image = PictureArray(i) 
     i = i + 1 

enter image description here 감사합니다!

답변

1

먼저, 위와 같은 FileInfo가 아닌 DirectoryInfo의 이미지를 가져 오는 방법을 보여 줬습니다!

배열 형식이 인데 배열 대신 my answer on your previous question을 사용했습니다. 배열이 훨씬 좋기 때문에 even than an ArrayList입니다. 목록의 항목에 액세스 할 수 있습니다 (색인 또는 "foreach"를 통해).

어쨌든 배열 사용을 주장하는 경우 ToList 대신 ToArray-Extension을 사용해야합니다. 예 :

Dim imageArray = dir.GetFiles("*.jpg", IO.SearchOption.AllDirectories).ToArray 

자세한 내용은 FileInfo-Class을 참조하십시오. 예를 들어 FileInfo.Name을 호출하여 이미지 이름 (경로없이 파일 이름)을 얻거나 FileInfo.FullName을 호출하여 전체 경로를 가져와야합니다.

그래서이 작동합니다 :

Dim dir = New IO.DirectoryInfo("C:\Users\turcotd\Desktop\ITLPers") 
Dim images = dir.GetFiles("*.jpg", IO.SearchOption.AllDirectories).ToList 
Dim pictures As New List(Of PictureBox) 
For Each img In images 
    Dim picture As New PictureBox 
    picture.Image = Image.FromFile(img.FullName) 
    pictures.Add(picture) 
Next 
+0

감사합니다. 그러나 이제 어떻게 PictureBox 목록에서 특정 인덱스에 액세스 할 수 있습니까? picBox1 = (사진 (1)) picBox2 = (사진 (2)) 다음과 : 내 말은 ... 그럼 어떻게 내가 뭔가를 말할 수의 실제의 PictureBox의 이름은 "picBox1"라고하자,이다 내 말은? – Growler

+0

@Growler : 이미 말씀 드렸듯이 : 'Dim picBox1 = pictures (1)'과 같이 색인을 통해 항목에 액세스 할 수 있습니다. 그러나 List는 0부터 시작합니다 (Array와 마찬가지로). 따라서 첫 번째 항목을 얻으려면'pictures (0)'이 필요합니다. –

+0

나는 이것을 시도했다. 롤.나는 바보로서 벗어나고있는 것처럼 느낀다. 그러나 나는 정적으로 다음과 같이 이미지를 추가하는 것을 제외하고는 아무것도 작동하지 않는 이유를 확실히 알기 위해이 것을 시도했다. Dim imageArray() As String = { "C : \ Users \ turcotd \ Desktop \ ITLPers \ dan.jpg ","C : \ Users \ turcotd \ Desktop \ ITLPers \ marcus.jpg "} – Growler

0

이미지가 데이터 배열이 아니므로 fileinfo을 사용하여 이미지를 바이트 배열로 읽을 수 있습니다.

팀의 대답 here at your previous question 매우 잘하면 그냥 목록에 넣습니다. 그런 다음 thelist.toarray를 호출하면 목록이 배열이됩니다.

편집 : 이 링크가 도움이 될 것입니다.

http://www.codeproject.com/KB/vb/ImageProccessing.aspx

그것은 매우 간단한 과정이다.

문제는 이미지를 문자열 또는 정수로 생각하는 것입니다. 그것은 바이트 모음입니다. 희망이 도움이되었습니다.

+0

죄송합니다, 나는 그의 방법을 시도했습니다, 그것은 작동하지 않습니다. 그래서 여기에 나는 Tim의 대답을 따랐다 고 가정합니다 : pictureArray (i).로드 (여기에 무엇이 있습니까?) – Growler

관련 문제