본문 바로가기
VB.net

이미지 파일 첨부하여 Reszie하기(feat. 파일크기 제한)

by 호야호잇 2018. 4. 2.

        Try


            Dim ofdImage As New OpenFileDialog

            ofdImage.InitialDirectory = Application.StartupPath

            ofdImage.CheckFileExists = True

            ofdImage.DefaultExt = "doc"

            ofdImage.Multiselect = False

            ofdImage.Filter = "이미지|*.jpg*;*.png"

            If ofdImage.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then



                '첨부하려는 그림파일이 2MB 미만으로 제한

                Dim img_file As New FileInfo(ofdImage.FileName)

                If img_file.Length / 1024 / 1024 > 2 Then '10M이하만 첨부가능

                    MsgBox("첨부 파일은 2M이하로 사용해주세요")

                    Exit Sub

                End If


                '이미지 붙여넣기

                Dim img As Image = Image.FromFile(ofdImage.FileName)


                ' 기존 이미지 업로드 시 사이즈 200,200 으로 수정 후 등록 - 최성환M

                'Dim thumb As New Bitmap(200, 200)

                'Dim g As Graphics = Graphics.FromImage(thumb)

                'g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

                'g.DrawImage(img, New Rectangle(0, 0, 200, 200), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)

                'Clipboard.SetImage(thumb)

                'RichTextBoxEx1.Paste()

                'Clipboard.Clear()


                ''이미지 Size 확인 후 기준(가로) 보다 클 경우 기준 Size 비율 및 기준 Size 이하로 축소 - 김헌호M

                If img.Width > 400 Then


                    Dim St_width As Integer = 400 '가로 기준

                    Dim Ratio As Double

                    Dim resize_width, resize_height As Integer


                    ' 가로기준(400) / 원래 그림의 가로를 나눠 비율을 구함

                    Ratio = (St_width / img.Width)


                    '구한 비율을 원래 그램의 가로,세로로 곱하여 RESIZE 시킴

                    resize_width = img.Width * Ratio

                    resize_height = img.Height * Ratio


                    '만약 RESIZE 후 세로길이가 600이상인 경우에는 500으로 세로길이 FIX시킴

                    If resize_height > 600 Then

                        resize_height = 500

                    End If


                    Dim resize_img As New Bitmap(resize_width, resize_height)

                    Dim g As Graphics = Graphics.FromImage(resize_img)


                    g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic

                    g.DrawImage(img, New Rectangle(0, 0, resize_width, resize_height), New Rectangle(0, 0, img.Width, img.Height), GraphicsUnit.Pixel)

                    Clipboard.SetImage(resize_img)

                End If


                RichTextBoxEx1.Paste()

                Clipboard.Clear()



            End If

        Catch ex As Exception


        End Try

'VB.net' 카테고리의 다른 글

롤링 ListBox  (0) 2018.04.16
숫자 올림, 반올림, 버림  (0) 2018.04.11
Form 확대/축소  (0) 2018.03.30
특정글자가 포함되어있는 경우의 조건문  (0) 2018.03.30
Windows Form > Sicker Form으로 만들기  (0) 2018.03.30