CImage类在VS2010中的应用与图像处理教程

article/2025/6/18 10:44:27

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文旨在介绍如何在Visual Studio 2010中使用MFC库的CImage类进行图像处理。首先概述了CImage类的功能,然后详细讲解了加载、显示、保存图像以及进行裁剪、缩放、旋转等操作的方法。提供了示例代码,说明如何在Windows应用程序中实现基本的图像加载和显示。还探讨了CImage在高级应用中的使用,包括与其他MFC组件的整合及多线程环境下的图像处理。此教程配合相关文档和示例程序,旨在帮助开发者提高图像处理的编程技能,丰富Windows应用的图像功能。 vs2010 Cimage

1. CImage类概述与基本图像操作

CImage类概述

CImage类是Microsoft Foundation Classes(MFC)中用于处理图像的一个非常重要的类,支持常见的图像处理操作,比如加载、保存、显示、绘制等。它以一种直观的方式封装了图像数据,使开发者可以在不需要深入了解图像文件格式的情况下,进行图像操作。

基本图像操作

CImage类提供了一系列基本图像操作的方法,例如: - 创建一个新的图像对象 - 通过指定格式加载现有图像文件 - 将图像数据保存到磁盘文件 - 在MFC应用程序中显示图像 - 绘制图像到视图或者对话框控件中 - 对图像进行裁剪、缩放等基本处理

使用CImage类进行基本图像操作是初学者入门MFC图像处理的起点,也是构建复杂图像处理功能的基础。随着章节的深入,我们将逐一探讨这些操作的具体实现和高级用法。

2. 加载图像

2.1 支持的图像格式

加载图像到CImage类中是图像处理流程的第一步。为了使用CImage类处理图像,首先要了解它支持哪些图像格式。该类支持多种格式,包括常见的BMP、JPEG和PNG等。

2.1.1 BMP图像加载

BMP(Bitmap)格式是Windows操作系统支持的一种图像文件格式,它可以是无压缩的,也可以是有压缩的。在CImage类中,加载BMP格式的图像相对简单,因为该类提供了直接支持。下面的代码段演示了如何加载一个BMP图像:

#include <atlimage.h> // 引入CImage类的头文件CImage image;
if (image.Load(_T("path_to_image.bmp")) != S_OK) {// 加载失败的处理逻辑
}

在这段代码中,首先包含了atlimage.h头文件,该文件定义了CImage类。之后创建了CImage类的实例,并调用Load函数加载BMP图像。如果图像加载成功,函数返回S_OK;如果加载失败,则需要进行错误处理。

2.1.2 JPEG图像加载

JPEG(Joint Photographic Experts Group)格式是一种流行的压缩图像格式,广泛用于网络上的图像传输。CImage类通过使用IStream接口和第三方库(如libjpeg)来实现对JPEG格式的支持。下面的代码段展示了加载JPEG图像的方法:

CImage image;
if (image.Load(_T("path_to_image.jpg")) != S_OK) {// 加载失败的处理逻辑
}

这段代码和加载BMP图像的代码类似,只是文件扩展名为.jpg。

2.1.3 PNG图像加载

PNG(Portable Network Graphics)格式是一种支持无损压缩的图像格式,广泛用于网络和应用程序中。和JPEG类似,CImage通过外部库支持PNG格式。下面的代码段是加载PNG图像的示例:

CImage image;
if (image.Load(_T("path_to_image.png")) != S_OK) {// 加载失败的处理逻辑
}

这段代码看起来和加载BMP和JPEG图像的代码一样,但是CImage类在背后使用了相应的库来解析和解码PNG图像。

2.2 图像文件的读取机制

2.2.1 文件头解析

在加载图像时,CImage类首先会解析文件头,以确定文件类型并获取图像的元数据。例如,BMP文件头包含了图像的宽度、高度、颜色深度等信息。文件头的解析对于正确加载图像至关重要。

2.2.2 图像数据的内存映射

一旦文件头被解析,CImage类就会进行图像数据的内存映射。这个过程涉及到为图像数据分配适当的内存空间,并将文件中的图像数据读入到内存中,以便后续的处理和操作。这个过程对用户来说是透明的,CImage类内部封装了相关的实现细节。

以上内容涵盖加载图像的基础知识,包括支持的图像格式和读取机制。接下来的章节将深入探讨如何显示和保存图像,以及对图像进行基本和高级的处理技术。

3. 显示图像

3.1 CDC与图像显示

3.1.1 CDC类介绍

在MFC(Microsoft Foundation Classes)中,CDC类是一个抽象类,代表了一个设备上下文(Device Context),它是一种用于设备无关绘图的机制。CDC类提供了多种方法用于处理图形和文本的输出,以及管理剪切区域和变换。CDC是所有与设备相关类的基类,例如CClientDC、CWindowDC和CPaintDC等,它们提供了不同的DC类型和特定用途。

为了在窗口中显示图像,我们需要使用CDC提供的绘图函数。这些函数包括但不限于:BitBlt、StretchBlt、PatBlt、TransparentBlt等。CDC类是实现这些操作的基础设施,通过它,可以将CImage对象中的图像数据渲染到屏幕上。

3.1.2 CImage与CDC的关联

CImage类是一个MFC类,用于处理图像数据,提供了加载、保存、编辑、显示和转换图像的方法。在处理图像显示时,CImage与CDC有着密切的关联。CImage类的许多方法可以将图像数据输出到CDC对象,从而实现图像的绘制。

例如,CImage类中的 Attach() 方法可以将一个HBITMAP(设备相关位图)与CImage对象关联,而 CreateFromHBitmap() 方法则可以从一个已存在的HBITMAP创建一个新的CImage对象。在绘制图像时,可以通过CDC类的成员函数如 StretchBlt 直接使用这些位图句柄。

3.1.3 CDC图像绘制示例代码

下面是使用CDC类将一个CImage对象绘制到窗口中的示例代码:

// 假设有一个CImage对象img和一个CClientDC对象dc
CDC* pDC = &dc;
CImage* pImg = &img;// 首先,将CImage对象的位图与一个HBITMAP句柄关联
HBITMAP hbm = pImg->m_hBitmap;
pImg->Attach(hbm);// 使用CDC的BitBlt函数将位图绘制到客户区
pDC->BitBlt(0, 0, pImg->GetWidth(), pImg->GetHeight(), pImg, 0, 0, SRCCOPY);// 绘制完成后,解除CImage与HBITMAP的关联
pImg->Detach();

3.1.4 CDC与CImage绘图过程分析

在上述代码中,首先我们获得了一个指向CDC对象的指针 pDC 和一个指向CImage对象的指针 pImg 。接下来,我们通过 Attach 方法将CImage对象与一个HBITMAP关联起来。这样做的目的是让CDC对象能够识别和使用这个位图。

BitBlt 是CDC类提供的一个函数,用于将指定的源矩形区域的位图拷贝到目标设备上下文中。在这个例子中,我们将整个CImage对象绘制到窗口客户区,故源矩形和目标矩形的大小是一致的。 SRCCOPY 参数指定了绘制操作的模式,即源像素直接拷贝到目标。

最后,我们使用 Detach 方法解除CImage对象与HBITMAP句柄的关联。这个步骤是重要的,因为继续使用已经关联到DC的HBITMAP可能会导致资源的泄漏或错误的行为。

3.2 图像绘制方法

3.2.1 使用Draw函数

CImage类提供了 Draw 方法,这是一个非常便捷的函数,用于在CDC对象上绘制图像。此方法封装了位图的关联和位图的绘制过程,使开发者能够以更简洁的方式完成图像的绘制。

Draw 方法的定义如下:

BOOL Draw(CDC* pDC, int x, int y, int nWidth = -1, int nHeight = -1) const;

其中参数 x y 指定了图像在DC上的绘制位置。 nWidth nHeight 参数则是可选的,用于指定绘制图像的宽度和高度。如果不指定这两个参数,那么绘制图像的尺寸就是原始图像的尺寸。

3.2.2 绘图模式与效果

在使用CDC和CImage进行图像绘制时,除了基本的绘制模式,还可以设置绘图模式和效果来达到不同的视觉效果。

设置绘图模式

绘图模式决定了源像素和目标像素如何混合。CDC类提供了 SetBkMode SetROP2 SetStretchBltMode 等函数来设置绘图模式。

例如,我们可以通过设置混合模式来实现半透明效果:

pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0, 0, 0)); // 设置透明色为黑色
pDC->SetBkColor(RGB(0, 0, 0)); // 设置背景色为黑色
pImg->Draw(pDC, 0, 0);
应用图像效果

通过CDC类的函数,我们还可以应用一些图像效果,例如拉伸、旋转和镜像等。CDC类提供了 StretchBlt PatBlt 等函数来实现图像效果的调整。

下面是使用 StretchBlt 函数将图像拉伸绘制到指定区域的示例代码:

pDC->StretchBlt(0, 0, 200, 150, pImg, 0, 0, pImg->GetWidth(), pImg->GetHeight(), SRCCOPY);

通过这些方法和函数的组合使用,开发者可以灵活地控制图像的显示效果,以满足不同的业务需求。

4. 保存图像

4.1 磁盘保存格式支持

4.1.1 BMP格式保存

BMP(位图)是一种图像文件格式,广泛用于Microsoft Windows操作系统。BMP文件格式能够支持无损存储图像数据,但不支持压缩,这意味着图像文件可能会较大。对于CImage类而言,保存为BMP格式通常意味着将内存中的图像数据直接写入磁盘。

void SaveBMP(const CString& filename, CImage& image) {// 使用CImage的Save()函数保存为BMP格式image.Save(filename, Gdiplus::ImageFormatBMP);
}

上述代码中, Save 函数是CImage类提供的用于保存图像的方法。它接受两个参数:第一个参数是文件名,第二个参数指定了文件格式。 ImageFormatBMP 是一个GDI+提供的枚举值,指定保存为BMP格式。CImage内部会处理文件头的创建,图像数据的写入等操作。

4.1.2 JPEG格式保存

JPEG(联合图像专家组)是一种常见压缩格式,广泛用于照片和其他复杂图像的存储。与BMP不同,JPEG格式的图像可以被高度压缩,从而节省存储空间,但压缩过程中会丢失一部分图像质量。使用CImage类保存JPEG格式时需要注意图像质量与文件大小之间的权衡。

void SaveJPEG(const CString& filename, CImage& image, UINT quality) {// 调整压缩质量PROPFCHANGE props;props.lStructSize = sizeof(PROPFCHANGE);props.dwICCPropId = ImagePropQuality;props.dwType = PropertyTypeLong;props.lValue = quality;// 保存为JPEG格式image.SetProperty(&props);image.Save(filename, Gdiplus::ImageFormatJPEG);
}

在上述代码中,我们使用了 setProperty 方法来设置JPEG图像的压缩质量。 PROPFCHANGE 结构体用于指定属性改变, ImagePropQuality 是一个预定义的属性标识符,用于指定JPEG的压缩质量。参数 quality 可以设置在0(最低质量)到100(最高质量)之间。

4.1.3 PNG格式保存

PNG(便携式网络图形)是一种无损压缩的位图图形格式,支持高彩色图像,并且被广泛用于网络。PNG格式的图像在压缩时不会丢失信息,但文件大小会比JPEG大。使用CImage保存PNG格式非常简单,调用和JPEG类似的方法。

void SavePNG(const CString& filename, CImage& image) {image.Save(filename, Gdiplus::ImageFormatPNG);
}

这段代码直接调用 Save 方法,将图像保存为PNG格式。由于PNG是无损压缩,它非常适合保存需要保持图像质量的场景,如图标、插图和其他图形设计作品。

4.2 图像保存过程与细节

4.2.1 保存过程分析

保存图像的过程大致可分为以下几个步骤:

  1. 创建文件 :首先,系统会在磁盘上创建一个新的文件,并为其分配空间。

  2. 写入文件头 :图像格式决定了文件头的内容。对于BMP,需要包含位图文件头、位图信息头和调色板(如果使用调色板);JPEG需要的是JPEG文件的结构;而PNG需要的是PNG特有的文件头结构。

  3. 写入图像数据 :图像的像素数据按顺序写入文件。这个过程中,压缩算法如果被启用,会执行压缩操作。

  4. 关闭文件 :图像数据写完后,关闭文件句柄,完成保存操作。

在CImage中,大部分步骤都是封装好的,开发者需要做的只是调用相应的保存方法。

4.2.2 错误处理与优化

错误处理在图像保存过程中非常重要,尤其是考虑到磁盘空间不足或文件系统权限限制等潜在问题。在CImage中,可以通过检查 Save 方法返回值来判断保存是否成功。

if(image.Save(filename, Gdiplus::ImageFormatJPEG) != Ok) {// 错误处理逻辑AfxMessageBox(_T("保存图像失败"));
}

在实际应用中,错误处理逻辑应该包含对错误类型的判断,以及相应的错误提示或用户交互设计。

在性能优化方面,保存大尺寸图像到磁盘时可以考虑以下方法:

  • 使用异步保存 :避免UI线程在保存过程中无响应。
  • 调整图像分辨率 :保存较低分辨率的图像文件,减少保存时间。
  • 压缩算法优化 :选择合适的压缩级别,平衡文件大小和保存时间。

以下是优化保存操作的示例代码:

void SaveOptimizedJPEG(const CString& filename, CImage& image, UINT quality) {// 设置压缩质量PROPFCHANGE props;props.lStructSize = sizeof(PROPFCHANGE);props.dwICCPropId = ImagePropQuality;props.dwType = PropertyTypeLong;props.lValue = quality;image.SetProperty(&props);// 异步保存图像image.Save(filename, Gdiplus::ImageFormatJPEG, &AsyncSaveCallback);
}UINT __stdcall AsyncSaveCallback(HGDIOBJ hImage, UINT nEvent, INT_PTR clientData) {// 用户自定义的回调函数// 这里可以处理保存完成后的逻辑,例如提示用户保存成功if (nEvent == GDIOBJ_CANCELDISPLAY) {// 保存被取消的处理逻辑} else if (nEvent == GDIOBJ_DISPLYSUCCESS) {// 保存成功后的处理逻辑AfxMessageBox(_T("图像保存成功"));}return 0;
}

在上述代码中, Save 函数的第三个参数是一个指向回调函数的指针。当保存操作完成时,系统会调用这个回调函数,提供一个机会来执行一些额外的逻辑,比如显示提示信息或者处理用户取消操作。

本章节介绍了CImage类在图像保存方面的应用,从基本的文件格式支持到具体的技术实现和性能优化方法。通过这些内容,开发者能够更全面地掌握CImage在图像保存方面的功能,并能在实际开发过程中更高效地使用。

5. 图像处理

在数字图像处理的世界里,图像处理技术广泛应用于各种场景,从简单的图像裁剪到复杂的颜色空间转换,每一个操作都要求我们具备一定的技术基础和对图像数据结构的深入理解。本章节将探讨CImage类在图像处理方面的应用,并深入分析基本与高级图像处理技术。

5.1 基本图像处理技术

5.1.1 图像裁剪

图像裁剪是图像处理中最基础的操作之一,它允许用户选择图像的一部分区域进行保留。在CImage类中,图像裁剪可以通过定义裁剪区域的左上角坐标和宽度、高度来实现。

void CropImage(CImage& image, int x, int y, int width, int height)
{CImage croppedImage;croppedImage.Create(width, height, image.GetBPP());for (int i = 0; i < height; ++i){for (int j = 0; j < width; ++j){croppedImage.SetPixel(j, i, image.GetPixel(x + j, y + i));}}image = croppedImage;
}

在上述代码中, CropImage 函数接受原始图像对象、裁剪区域左上角坐标及裁剪区域的宽度和高度作为参数。然后创建一个新的CImage对象,并逐个像素复制原图到新图像指定裁剪区域内。

5.1.2 图像缩放

图像缩放是调整图像尺寸的过程。通过调整像素的大小,图像可以缩小或放大。CImage类提供了 Resize 方法,允许用户指定新图像的宽度和高度。

void ResizeImage(CImage& image, int newWidth, int newHeight)
{CImage resizedImage;resizedImage.Create(newWidth, newHeight, image.GetBPP());for (int i = 0; i < newHeight; ++i){for (int j = 0; j < newWidth; ++j){// 这里可以根据需要实现更复杂的缩放算法,如双线性插值等resizedImage.SetPixel(j, i, image.GetPixel(j * image.Width() / newWidth, i * image.Height() / newHeight));}}image = resizedImage;
}

上述代码中, ResizeImage 函数接受原始图像对象和新图像的宽度、高度参数,并创建了一个新的CImage对象。在简单示例中,我们采用了直接像素复制的方式来近似缩放过程,实际上,为了获得更好的缩放效果,可以实现更高级的像素插值算法。

5.2 高级图像处理技术

5.2.1 图像旋转

图像旋转指的是将图像按照一定角度进行旋转。在CImage中,图像旋转并非直接支持,因此需要我们手动实现旋转算法。

void RotateImage(CImage& image, double angle)
{CImage rotatedImage;rotatedImage.Create(image.Width(), image.Height(), image.GetBPP());// 这里应该使用图像旋转算法来填充 rotatedImage 对象...// 代码过于复杂,这里仅作示意。image = rotatedImage;
}

由于旋转算法较为复杂,这里仅为概念性说明。实际代码应包括图像插值、角度转换等,通常涉及到三角函数和颜色插值。根据需要,可以实现顺时针或逆时针旋转。

5.2.2 颜色转换与调整

颜色调整是图像处理中的重要环节,它包括亮度调整、对比度调整和颜色空间的转换。在CImage类中,颜色转换可以通过修改像素值来实现。

void AdjustContrastAndBrightness(CImage& image, int brightness, int contrast)
{for (int i = 0; i < image.GetHeight(); ++i){for (int j = 0; j < image.GetWidth(); ++j){COLORREF color = image.GetPixel(j, i);int r = GetRValue(color);int g = GetGValue(color);int b = GetBValue(color);// 对RGB值进行亮度和对比度的调整r = ((r - 128) * contrast / 128) + 128 + brightness;g = ((g - 128) * contrast / 128) + 128 + brightness;b = ((b - 128) * contrast / 128) + 128 + brightness;// 将调整后的RGB值重新赋给图像像素image.SetPixel(j, i, RGB(r > 255 ? 255 : r, g > 255 ? 255 : g, b > 255 ? 255 : b));}}
}

上述代码展示了如何通过调整RGB值来实现亮度和对比度的调整。在实际应用中,可能需要考虑更复杂的色彩校正技术,比如伽马校正、色调映射等。

在本章中,我们介绍了CImage类在图像处理中的基本和高级应用。图像裁剪和缩放是数字图像处理的基础技术,而图像旋转和颜色调整则属于更高级的应用。掌握这些技术,能够帮助我们在进行图像处理时更高效、精确地实现所需的视觉效果。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:本文旨在介绍如何在Visual Studio 2010中使用MFC库的CImage类进行图像处理。首先概述了CImage类的功能,然后详细讲解了加载、显示、保存图像以及进行裁剪、缩放、旋转等操作的方法。提供了示例代码,说明如何在Windows应用程序中实现基本的图像加载和显示。还探讨了CImage在高级应用中的使用,包括与其他MFC组件的整合及多线程环境下的图像处理。此教程配合相关文档和示例程序,旨在帮助开发者提高图像处理的编程技能,丰富Windows应用的图像功能。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif


http://www.hkcw.cn/article/qMgInMWkmG.shtml

相关文章

【机器学习】图像处理与深度学习利器:OpenCV实战攻略全面解析

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 前言 OpenCV想必大家都听过跨平台计算机视觉库&#xff0c;可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而…

机器学习中的图像处理与计算机视觉

引言 在现代计算机科学中&#xff0c;图像处理和计算机视觉已成为最活跃的研究领域之一&#xff0c;这得益于机器学习和深度学习的发展。本文将深入探讨图像处理与计算机视觉的基础概念、常见应用、关键技术、常用工具&#xff0c;以及在这些领域中的代码示例。通过本篇文章&a…

Fiji —— 基于 imageJ 的免费且开源的图像处理软件

文章目录 一、Fiji —— 基于 imageJ 的免费且开源的图像处理软件1.1、Fiji工具安装&#xff08;免费&#xff09;1.2、Fiji源码下载1.2、Fiji - Plugins插件安装 二、功能详解2.0、Fiji - ImageJ&#xff08;Web应用程序&#xff09;2.1、常用功能&#xff08;汇总&#xff09…

深入了解 OpenCV:C# 开发者的图像处理利器

OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉与图像处理库&#xff0c;自 2000 年由 Intel 开发以来&#xff0c;已经发展成为业界领先的图像处理框架之一。凭借其跨平台特性、丰富的功能集以及活跃的社区支持&#xff0c;OpenCV…

巴黎世家平角短裤造型裙子已缺货 时尚争议再起

近日,奢侈品牌巴黎世家推出的一款售价4500元的女款半身裙在网上引发热议。不少网友吐槽该裙子造型与平角短裤极为相似,直呼“看不懂时尚”。据巴黎世家官网介绍,这款深蓝色弹力平纹针织半身裙亮相于2025秋季系列Look 50和Look 54。裙子采用弹力棉混纺平纹针织面料,设计为平…

日本男子杀害妻子幼女后自杀 家庭悲剧震惊邻里

6月2日上午,日本大阪府吹田市发生一起悲剧。一名26岁男子从世博会馆附近的一座天桥上跳下自杀。警方随后在其家中发现了他妻子和两名幼女的尸体,三人腹部血流不止,已经死亡。现场还发现了一把带血的菜刀和一张字条,字条上写着对女儿和妻子的歉意。据警方透露,当天早上6点2…

女婴术后脑损伤疑撞到床栏 家属求真相艰难

近日,四川的徐女士反映,她五个多月大的孩子鱼鱼在四川大学华西第二医院锦江院区做完心脏手术后,头部出现了一个创口。经检查,鱼鱼被诊断为脑出血和脑损伤,并伴有癫痫。当地卫健委介入调查后未能得出明确结论。5月29日,记者在事发医院见到已经一岁多的鱼鱼,她仍旧不会爬行…

A股六月开门红 三大指数集体反弹

端午节三天小长假后,六月首个交易日A股三大指数集体反弹,给股民朋友们带来了一个“开门红”。这是继五月“开门红”之后,A股再度取得月度良好开局。截至收盘,沪指涨0.43%,深成指涨0.16%,创业板指涨0.48%,北证50指数涨1.03%。全市场成交额达到11638亿元,较上日放量4亿元…

端午节假期国内出游1.19亿人次 文旅融合添彩传统节日

文化和旅游部6月3日公布了2025年端午节假期文化和旅游市场的情况。经测算,假期三天内,全国国内出游人数达到1.19亿人次,同比增长5.7%;国内出游总花费为427.30亿元,同比增长5.9%。在假期期间,群众积极参与赛龙舟、吃粽子、唱山歌和赏古曲等活动,传统节日文化内涵与旅游发…

乌克兰袭击克里米亚大桥 画面曝光 大桥严重受损

据乌克兰独立新闻社等媒体6月3日报道,乌克兰方面对克里米亚大桥发动了袭击。乌克兰国家安全局表示,克里米亚大桥在这次袭击中严重受损。截至报道时,俄罗斯官方尚未对此消息作出公开回应。责任编辑:0764

媒体评游客因小孩进入拍摄画面打架 迪士尼冲突引热议

5月31日,有网友发布视频称,在上海迪士尼疯狂动物城园区内,一对情侣和一家三口发生肢体冲突。视频中显示,双方在现场扭打,周围游客纷纷上前劝阻。6月1日晚,上海市公安局浦东分局通报了此事。据通报,5月31日18时许,浦东公安分局接到报警,称迪士尼乐园内有人打架。经初步…

广州即将进入“蒸烤”模式 高温晴热天气来袭

广东省气象部门预计,端午假期最后一天起的新一轮“龙舟水”强降水过程将在4日开始减弱。在本轮“龙舟水”减弱前,广东各地仍需防御风雨影响;即使在“龙舟水”减弱后,仍需警惕地质灾害发生。此外,在“龙舟水”间歇期,广东各地还需留意高温天气。根据广东省气象部门的观测和…

南海部分海域有火箭残骸坠落 航行警告发布

据中国海事局消息,清澜海事局发布航行警告,6月4日0时至6月6日24时,南海部分海域将有火箭残骸掉落,禁止驶入。责任编辑:0764

当年他步行3公里送歼-10原型机首飞 见证中国航空辉煌

我国自主研发的出口型战斗机歼-10CE在国际地区冲突中表现出色,引起了国际军贸市场的广泛关注。这款由成都所设计、成飞制造的单发单座多用途战斗机具备体系协同作战能力,在强电磁对抗环境下可进行超视距多目标攻击及多模式对地精确打击。在机库中,记者见到了参与歼-10飞机研…

郑钦文不敌萨巴伦卡止步法网8强 期待不断突破

6月3日17时,2025法网女单1/4决赛中,郑钦文以0-2不敌赛会头号种子萨巴伦卡。首盘比赛中,双方各破对方一个发球局,最终在抢七中,郑钦文以6-7(3)失利。这场比赛是郑钦文与萨巴伦卡的第8次交手。此前的6次对决中,郑钦文均未能取胜,因此萨巴伦卡被视为她职业生涯中的一座“…

吴京的车又翻了 生活中的小插曲

6月3日,吴京发文调侃自己再次翻车,称“哈哈一不留神,一个小断头,啪…..生活中不也是经常这样嘛….”此前在5月27日凌晨,吴京曾深夜发文表示:“安全完成SS5赛段。又翻车了,但人没事儿!大家放心!”责任编辑:0764

中央巡视期间 王年生被查 海南反腐再传捷报

中央巡视组进驻后,海南反腐行动取得新进展。海南省纪委监委于6月3日发布消息,原海南省农村信用社联合社党委书记、理事长王年生因涉嫌严重违纪违法,正接受纪律审查和监察调查。王年生曾担任海南省政府金融工作办公室主任、省政府办公厅党组成员、海南银行筹建工作组组长及海…

俄方会如何回应乌蛛网行动 无人机袭击引发紧张态势

乌克兰国家安全局(SBU)宣布,他们出动117架无人机对俄罗斯多个州的军事基地实施袭击,成功击中41架俄军战机,导致俄罗斯主要机场中约34%的战略轰炸机遭到攻击,损失达到70亿美元。这一消息让外界惊讶,尤其是袭击目标包括俄远东地区的机场。乌官员随后更新数据称,至少有13架…

javaEE->多线程:线程池

线程池 线程诞生的意义&#xff1a;因为进程的创建/销毁&#xff0c;太重量了&#xff08;比较慢&#xff09; 但如果近一步提高创建/销毁的频率&#xff0c;线程的开销也不容忽视。 有两种方法可以提高效率&#xff1a; 1.协程&#xff08;轻量级线程&#xff09;&#xff…

ubuntu24.04安装教程(图文详解)

Ubuntu 24.04 LTS&#xff0c;代号 Noble Numbat&#xff0c;于 2024 年 4 月 25 日发布&#xff0c;现在可以从 Ubuntu 官方网站及其镜像下载。此版本将在 2029 年 4 月之前接收为期五年的官方安全和维护更新。 关于 Ubuntu 24.04 LTS 的一些关键点&#xff1a; 发布日期&am…