C# 如何获取图片的长宽
时间: 2024-08-28 11:02:03 浏览: 26
在C#中,你可以使用`System.Drawing.Image`类来获取图片的宽度和高度。以下是一个简单的示例:
```csharp
using System.Drawing;
// 假设图片已经加载到PictureBox control或者Image对象中
Image img = pictureBox.Image; // 或者 Image img = Image.FromFile("path_to_your_image.jpg");
int width = img.Width;
int height = img.Height;
Console.WriteLine($"图片的宽度是 {width},高度是 {height}");
```
如果你想从文件路径读取图片,记得替换"路径_to_your_image.jpg"为实际图片文件的完整路径。
如果你只是想处理流(Stream)中的图像,可以这样做:
```csharp
using (Stream inputStream = File.OpenRead("path_to_your_image.jpg"))
{
using (Image img = Image.FromStream(inputStream))
{
int width = img.Width;
int height = img.Height;
Console.WriteLine($"图片的宽度是 {width},高度是 {height}");
}
}
```
相关问题
C# 获取图片文件大小
C#获取图片文件大小的方法有多种,以下是两种常用的方法:
方法一:使用FileInfo类获取文件大小
可以使用FileInfo类的Length属性获取文件大小,然后将其转换为MB或KB等单位。示例代码如下:
```
private double GetImageSize(string path) {
FileInfo fileInfo = new FileInfo(path);
double length = Convert.ToDouble(fileInfo.Length);
double size = length / 1024 / 1024; // MB
return size;
}
```
方法二:使用Shell32获取图片大小和分辨率
可以使用Shell32库中的NameSpace和FolderItem类获取图片的大小和分辨率。示例代码如下:
```
using Shell32;
public static void GetJpgSizeByShell(string JpgPath, out Size JpgSize, out float Wpx, out float Hpx) {
var shell = new ShellClass();
Folder der = shell.NameSpace(Path.GetDirectoryName(JpgPath));
FolderItem item = der.ParseName(Path.GetFileName(JpgPath));
JpgSize = new Size(0, 0);
try {
Wpx = float.Parse(Regex.Replace(der.GetDetailsOf(item, 161), @"[^0-9]+", "")); // 水平分辨率
int w = int.Parse(Regex.Replace(der.GetDetailsOf(item, 162), @"[^0-9]+", "")); // 图片宽像素
Hpx = float.Parse(Regex.Replace(der.GetDetailsOf(item, 163), @"[^0-9]+", "")); // 垂直分辨率
int h = int.Parse(Regex.Replace(der.GetDetailsOf(item, 164), @"[^0-9]+", "")); // 图片高像素
JpgSize.Width = w;
JpgSize.Height = h;
} catch {
JpgSize = new Size(0, 0);
Wpx = 0;
Hpx = 0;
}
}
```
C#获取图片的绝对路径
在C#中,获取图片的绝对路径通常是指获取存储在文件系统中的图片文件的完整路径。以下是获取图片绝对路径的几种常见方法:
1. 使用`System.IO`命名空间下的`FileInfo`类来获取。例如,如果你已经有一个文件路径或者从某个源得到了一个图片文件名,你可以这样做:
```csharp
FileInfo fileInfo = new FileInfo("图片文件名");
string absolutePath = fileInfo.FullName;
```
2. 如果图片是在应用程序的资源中,可以通过资源管理器获取其绝对路径。首先需要确定资源的类型和位置,然后使用相应的API获取资源路径。
```csharp
// 假设图片是嵌入在程序集中的资源
string resourceName = "命名空间.图片资源名";
Assembly assembly = Assembly.GetExecutingAssembly();
string resourcePath = assembly.GetManifestResourceNames().Single(str => str.EndsWith(resourceName));
string absolutePath = assembly.GetManifestResourceStream(resourcePath).ToString();
```
3. 在Web应用中,如果你需要获取上传图片的绝对路径,可以在上传图片后使用服务器的文件系统来指定路径:
```csharp
string fileName = Path.GetFileName上传时的文件名);
string folderPath = Server.MapPath("~/上传文件夹路径");
string filePath = Path.Combine(folderPath, fileName);
string absolutePath = Path.GetFullPath(filePath);
```
请注意,Web应用中的路径会依赖于服务器的配置和应用程序的目录结构。