以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]picturebox控件显示成横向  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132659)

--  作者:无限5180
--  发布时间:2019/3/26 21:55:00
--  [求助]picturebox控件显示成横向

老师,把图片经过压缩上传后,原竖向的图片会横向保存。原横向的图片不会变化。这个怎么解决呢
这是选择图片时是竖向图片,宽度小于高度

图片点击可在新窗口打开查看此主题相关图片如下:上传选择的图片是竖向的.png
图片点击可在新窗口打开查看

这是压缩代码
Dim file As String = "d:\\test.jpg"
Dim img As image = getImage(file)
Dim bmp As bitmap
If img.width > 800 Then
    If 800 * (img.height / img.width) > 600 Then
        bmp = new bitmap(img, 800*(600/(800*(img.height/img.width))), 600)
    Else
        bmp = new bitmap(img, 800, 800 * (img.height / img.width))
    End If
End If
bmp.save("d:\\缩略图.jpg")
bmp.Dispose
压缩后
保存的图片是横向的

图片点击可在新窗口打开查看此主题相关图片如下:选择图片压缩后就横向显示.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2019/3/26 22:35:00
--  
1楼代码我测试没有问题。是不是图片本来就是横的。上传图片测试
--  作者:无限5180
--  发布时间:2019/3/26 22:46:00
--  
原始图片就是竖向的,我把原始图截图也上传了,第二张截图是压缩后显示的,就变成了横向的了
--  作者:有点蓝
--  发布时间:2019/3/26 22:52:00
--  
1楼的图片宽度不够800,使用1楼的代码不符合条件,不需要压缩。我把分辨率改大后测试没有问题
--  作者:有点甜
--  发布时间:2019/3/27 10:23:00
--  

你加一个图片旋转的功能,即可,如

 

Dim bmp As New bitmap("d:\\test.jpg")
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone)
bmp.save("d:\\test2.jpg")

 

------------------

顺时针旋转90度     RotateFlipType.Rotate90FlipNone
逆时针旋转90度 RotateFlipType.Rotate270FlipNone
水平翻转 RotateFlipType.Rotate180FlipY
垂直翻转 RotateFlipType.Rotate180FlipX

 


--  作者:无限5180
--  发布时间:2019/3/27 15:54:00
--  回复:(有点蓝)1楼的图片宽度不够800,使用1楼的代码...
谢谢!!!
[此贴子已经被作者于2019/3/27 15:55:38编辑过]

--  作者:无限5180
--  发布时间:2019/3/27 18:00:00
--  
老师,如何判断原始图片是竖向或横向,我只需把原始图片为竖向显示时转90°,原始图像为横向显示时保持显示方向,无需转向
--  作者:有点甜
--  发布时间:2019/3/27 18:28:00
--  

 

不应该有问题的。元素图片发上来测试。

 

 


--  作者:无限5180
--  发布时间:2019/3/27 19:47:00
--  
Dim bmp As New bitmap("d:\\test.jpg")
bmp.RotateFlip(RotateFlipType.Rotate90FlipNone)
bmp.save("d:\\test2.jpg")

顺时针旋转90度     RotateFlipType.Rotate90FlipNone
逆时针旋转90度     RotateFlipType.Rotate270FlipNone
水平翻转    RotateFlipType.Rotate180FlipY
垂直翻转    RotateFlipType.Rotate180FlipX


这个代码没有问题,能转,关键是它把原本是横向的图片也旋转了.所以才需要判断一下,那个图片需要旋转,那个图片不需要旋转,例如原本横向的图片保持横向,原本竖向的图片转换后会变成横向的,这个才需要进行旋转的

--  作者:有点甜
--  发布时间:2019/3/27 22:14:00
--  

1、原始图片发上来测试。

 

2、试试

 

Dim img As Image = Image.FromFile("c:\\test.jpg")
Dim pt As PropertyItem() = img.PropertyItems
For i As Integer = 0 To pt.Length - 1
    Dim p As PropertyItem = pt(i)
    Select Case pt(i).Id
        Case 274
            Dim s  = p.value(0)
            msgbox("方向:  " & s)
            Select Case s
                Case 2
                    img.RotateFlip(RotateFlipType.RotateNoneFlipX)
                Case 3
                    img.RotateFlip(RotateFlipType.Rotate180FlipNone)
                Case 4
                    img.RotateFlip(RotateFlipType.RotateNoneFlipY)
                Case 5
                    img.RotateFlip(RotateFlipType.Rotate90FlipX)
                Case 6
                    img.RotateFlip(RotateFlipType.Rotate90FlipNone)
                Case 7
                    img.RotateFlip(RotateFlipType.Rotate270FlipX)
                Case 8
                    img.RotateFlip(RotateFlipType.Rotate270FlipNone)
            End Select
    End Select
Next