2016-07-13 27 views
0

私はに保存しようとしていますをロードしてLoadPictureをロードしています。次のコードで画像をロードしてサイズを変更しましたが、Me.Image1.Widthは画像をimage boxコントロールにサイズ変更して表示することのみを理解しました。Excel VBA。サイズ変更された画像をファイルに保存

画像を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 
+0

イメージをコマンドボタンに読み込んでサイズを変更しようとしていますか?どうして? –

+0

いいえ、コマンドボタンは、ユーザーがイメージを選択するダイアログウィンドウ(ブラウズファイル)を開きます。イメージは、 'Me.Image1.Picture'イメージボックスに表示されます。 – Nicero

+0

まあ、LoadPictureには、要求された高さ/幅のオプションのパラメータx、yがあります。それはあなたのために何をするのですか? –

答えて

2

解決済み。

私が提案したように、ImageMagickを使用しました(v7.0.2-4には以下が適用されます)。

  1. Download動的バージョン( 'Win32のダイナミック16におけるビットあたりのピクセル成分' またはWin64の)
  2. 選択を取り付ける:
    • は、システム・パス
    • にアプリケーションディレクトリを追加しますVBScript、VisualBasic、およびWSHのImageMagickObject OLEコントロールをインストールする

enter image description here


次のコードは、イメージを選択するためのダイアログウィンドウが開き、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 resize options

+0

クール!あなたが完了したことを嬉しく思っています。私の一般的なcmd /コンソールの出力ハッカーを行います。 –

関連する問題