MyTetra Share
Делитесь знаниями!
Дописать к картинке любые файлы
Время создания: 31.07.2019 22:37
Раздел: !Закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1521833127jrvurj4q2i/text.html на raw.githubusercontent.com

Дописать к картинке любые файлы

Опубликовано Июль 3, 2016 автором Памирыч

Код просто для забавы. Выбираем картинку, дописываем к ней файлы. Картинка продолжает открываться как ни в чем не бывало, однако непосвященный и не подумает, что в ней целый набор файлов. Посвященный «распакует» ее и получит желаемое

На форме 4 кнопки, в комментариях к коду подписано, что и где.


2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

Public Class Form1

    Dim Cont As String = ""

    Dim StartImage As String

    Dim SplFiles() As String = {"joinfiles"}

    Dim NameAndFile() As String = {"nameandfile"}

 

    'Выбор основной картинки, шаг 1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim OFD As New OpenFileDialog With {.Title = "Выберите основную картинку", .Filter = "Изображения|*.jpg;*.png;*.bmp"}

        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

            Cont &= IO.File.ReadAllText(OFD.FileName, System.Text.Encoding.Default)

            StartImage = OFD.FileName

        End If

    End Sub

 

    'Присоединяем файлы. Количество - по желанию. Шаг 2

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        If Cont.Length = 0 Then

            MsgBox("Все еще не выбрана основная картинка", MsgBoxStyle.Exclamation)

            Exit Sub

        End If

        Dim OFD As New OpenFileDialog With {.Title = "Выберите файл для присоединения"}

        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

            Cont &= SplFiles(0) & IO.Path.GetFileName(OFD.FileName) & NameAndFile(0) & IO.File.ReadAllText(OFD.FileName, System.Text.Encoding.Default)

        End If

    End Sub

 

    'Готовый массив сохраняем в стартовую картинку (сделайте ее бэкап, она будет переписана). Шаг 3

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        If Cont.Length = 0 Then

            MsgBox("Сохранять нечего", MsgBoxStyle.Exclamation)

            Exit Sub

        End If

        Dim SFD As New OpenFileDialog With {.Title = "Выберите файл для присоединения"}

        IO.File.WriteAllText(StartImage, Cont, System.Text.Encoding.Default)

    End Sub

 

    'Открытие результирующего файла, выбор папки. Диалог сам будет подставлять нужные имена для файлов

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Dim OFD As New OpenFileDialog With {.Title = "Выберите картинку, к которой присоединяли файлы", .Filter = "Изображения|*.jpg;*.png;*.bmp"}

        If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

            Dim Mix As String = IO.File.ReadAllText(OFD.FileName, System.Text.Encoding.Default)

            Dim FilesInfo() As String = Mix.Split(SplFiles, StringSplitOptions.RemoveEmptyEntries)

            If FilesInfo.Length > 1 Then

                For I As Integer = 1 To FilesInfo.Length - 1

                    Dim F_Info() As String = FilesInfo(I).Split(NameAndFile, StringSplitOptions.RemoveEmptyEntries)

                    Dim SFD As New SaveFileDialog With {.FileName = F_Info(0)}

                    If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then

                        IO.File.WriteAllText(SFD.FileName, F_Info(1), System.Text.Encoding.Default)

                    End If

                Next

            End If

        End If

    End Sub

End Class


'При «распаковке» в диалоге уже будут прописаны имена сохраняемых файлов

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования