Excel Vba. Сохранить измененное изображение в файл

Я пытаюсьсохранить в файл с измененным размером изображения загруженLoadPicture, С помощью следующего кода я загружаю изображение и изменяю его размер, но теперь я понял, чтоMe.Image1.Width изменяет размер изображения вimage box контроль только для отображения.

Если я сохраню изображение сsavepicture() сохраненное изображение совпадает с загруженным изображением.

Private Sub CommandButtonImage_Click()
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .ButtonName = "Submit"
        .Title = "Select a image"
        .Filters.Add "Image", "*.gif; *.jpg; *.jpeg; *.png", 1
        If .Show = -1 Then
            ' file has been selected

            ' fit image into image box
            Me.Image1.PictureSizeMode = fmPictureSizeModeZoom

            ' display preview image in an image control
            Me.Image1.Picture = LoadPicture(.SelectedItems(1))

            ' resize image
            Me.Image1.Width = 50

        Else
            ' something    
        End If
    End With
End Sub
 Nicero13 июл. 2016 г., 17:12
Спасибо за ваше время. Да, это звучит действительно сложно. : - ((
 Nicero13 июл. 2016 г., 16:15
x y параметрыLoadPicture Обратите внимание на настройку ширины или высоты изображения. Я ищу способ изменить размер изображения и затем сохранить его (измененный размер) в файл.
 Cody G13 июл. 2016 г., 16:11
Ну, у LoadPicture есть необязательные параметры x, y для запрашиваемой высоты / ширины. Что это делает для вас?
 Cody G13 июл. 2016 г., 15:58
Вы пытаетесь изменить размер изображения, загрузив его в командную кнопку ?? Зачем?
 Nicero13 июл. 2016 г., 16:09
Нет-нет, командная кнопка открывает диалоговое окно (просмотр файла), где пользователь выбирает изображение. Изображение затем отображается вMe.Image1.Picture изображение коробки.
 Cody G13 июл. 2016 г., 19:46
Добавьте imagemagick как объект COM +imagemagick.org/script/ImageMagickObject.php
 Cody G13 июл. 2016 г., 16:44
Я могу думать только о том, чтобы импортировать изображение в форму, изменить его размер, преобразовать форму в данные буфера обмена или OLEObject, а затем сохранить ее. Кажется слишком сложным - вы можете использовать консольный скрипт для обработки изображения, используя что-то вроде imagemagick. Может быть, увидетьstackoverflow.com/questions/18232987/...

Ответы на вопрос(1)

Решение Вопроса

Решаемые.

Как и предполагалось, я использовалImageMagick (следующее относится к v7.0.2-4).

Скачать динамический версия («Win32 динамическая с компонентом 16 бит на пиксель» или Win64)При установке выберите:Добавить каталог приложения в системный путьУстановите элемент управления OLE ImageMagickObject для VBScript, VisualBasic и WSH

Следующий код открывает диалоговое окно для выбора изображения, вызывает ImageMagickObject OLE, изменяет размер изображения и сохраняет его в новый файл:

Private Sub CommandButtonImage_Click()

    Dim img
    Set img = CreateObject("ImageMagickObject.MagickImage")

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .ButtonName = "Submit"
        .Title = "Selezionare un'immagine"
        .Filters.Add "Image", "*.gif; *.jpg; *.jpeg; *.png", 1
        If .Show = -1 Then
            ' file has been selected

            ' fit image into image box
            Me.Image1.PictureSizeMode = fmPictureSizeModeZoom

            ' display preview image in an image control
            Me.Image1.Picture = LoadPicture(.SelectedItems(1))

            ' this will resize the selected image keeping the aspect ratio 
            ' but resizing will be done only to fit into the size given 
            ' ('>' sign) and it will set the image name to 'resized.jpg'   
            img.Convert .SelectedItems(1), "-resize", "300x300>", "c:\resized.jpg"

        Else
            ' something
        End If
    End With
End Sub

Другое ImageMagickизменить размер.

 Cody G21 июл. 2016 г., 15:31
Здорово! Рад видеть, что ты это сделал. Ваш ответ может помочь мне и в будущем, когда я откажусь от общего хакерского вывода cmd / console.

Ваш ответ на вопрос