vb.net - 自动旋转画中画框

标签 vb.net image picturebox image-rotation

我的项目有一个用于加载图片的图片框控件,它工作正常。

但是,一些垂直的 jpg 图片在 Windows 资源管理器和我的图片框控件中水平显示 - 使用 Photoshop 等编辑器打开的同一文件显示垂直方向。

如何让图片在图片框控件中以正确的方向显示?

最佳答案

您需要检查图像并从 exif 标签中提取方向信息。

您需要做的第一件事是获得一个 exif 阅读器。在 Code Project 上有一个用 VB.NET 编写的例如。

如果将文件加载到 Image 中,您将能够从 PropertyItems 中读取 EXIF 属性(如此 C# 代码所示):

using (Image image = Image.FromFile(imageName))
{
    // Non property item properties
    this.FileName = imageName;
    PixelFormat = image.PixelFormat;
    this.Width = image.Size.Width;
    this.Height = image.Size.Height;

    foreach (PropertyItem pi in image.PropertyItems)
    {
        EXIFPropertyItem exifpi = new EXIFPropertyItem(pi);
        this.propertyItems.Add(exifpi);
    }
}

其中 EXIFPropertyItem 是一个转换 PropertyItem 的类。 PropertyItemId 是 EXIF 代码(方向为 0x0112)。

然后查找 Orientation 属性并读取它的值。值 5、6、7 和 8 用于纵向(垂直)图像,例如 6 旋转 90,8 旋转 -90。

确定方向后,您就可以调用适当的旋转变换以正确的方向显示图像。

关于vb.net - 自动旋转画中画框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232849/

相关文章:

vb.net - 帮助加速这个算法?埃拉托色尼筛法

image - ImageServer 的 Clearcanvas 连接字符串 "EndpointAddress"

python - 如何在 python flask 中加载图像?

image - 如何测量图像的峰值信噪比?

c# - .NET PictureBox - 如何确保资源已释放

c# - 使用鼠标事件在 Picturebox 中移动图像

选择组合框时vb.net列表框闪烁

c# - 数学表达式问题

.net - 使用 VB.net 和 excel(组合框和搜索)

c# - 旋转图像并查看下一页