![将图像从 Excel 复制到 Microsoft Paint 时分辨率会降低](https://linux22.com/image/1537081/%E5%B0%86%E5%9B%BE%E5%83%8F%E4%BB%8E%20Excel%20%E5%A4%8D%E5%88%B6%E5%88%B0%20Microsoft%20Paint%20%E6%97%B6%E5%88%86%E8%BE%A8%E7%8E%87%E4%BC%9A%E9%99%8D%E4%BD%8E.png)
有人能解释一下为什么将图片从 MS Office 应用程序(Excel/Word/Outlook)复制到 Microsoft Paint 时分辨率会下降吗?
详细解释一下:
- 我在 Excel 中截取了屏幕截图(插入 => 屏幕截图 => 屏幕剪辑)
- 我将其复制到 MS Paint
- 我将其复制回 MS Excel
新图像(从 Paint 粘贴)的大小(高度 2.04 英寸,宽度 4.71 英寸)大约是原始图像大小(高度 5.11 英寸,宽度 11.78 英寸)的一半(甚至更小)。我已将这两幅图像保存在两个不同的文件中,并注意到包含新图像的文件为 151 KB,而包含原始图像的文件为 287 KB。
准确地说,分辨率损失发生在从 Excel 复制到 Paint 的时候。
我正在使用 Windows 10 和 MS Office 2016。我的笔记本电脑屏幕有 4k 分辨率。
我怀疑这是 MS Paint 中存在的一个限制,因为如果从 Excel 复制到 Paint 3D(或从 Excel 复制到 Outlook),就不会发生同样的事情。MS Paint 可能还没有适应新的 4k 分辨率标准,但可能有一个我不知道的解决方案。
还要注意的是,我的另一台具有高清屏幕分辨率(而不是 4K)的笔记本电脑没有遇到同样的问题。我能够将图像从 Excel 复制到 MS Paint 并复制回 Excel,而不会造成图像大小的任何损失。
请指教。
编辑:正如@harrymc 所问,原始图像和粘贴到 MS Paint 的图像附在下面:
粘贴到 MS Paint 后的图像:
更多示例:
根据评论,我认为添加更多示例可以使问题更清楚。这次,我保留了较小的默认画布大小,这样就不会有多余的空白。如果粘贴了较大的图像,Paint 会自动放大画布大小以适合图像。
原始图像 - 大小 41 KB - 尺寸 532 像素 x 222 像素
图像,粘贴到 MS Paint 后 - 大小 8 KB - 尺寸 217 像素 x 92 像素
答案1
如果问题出在图像质量上:
发布的图片都是JPEG如果是这种情况,则每次以 JPEG 格式保存都会丢失分辨率。这种格式是有损的,因为每次后续压缩都会导致图像质量有所损失。
此外,两幅图像的尺寸并不相同,第二幅图像实际上比第一幅图像更大,因此像素外推会比原始图像造成进一步的损失。
如果您希望获得更高的准确性,请使用比 Paint 更先进的图像编辑器,例如免费的油漆网,并使用无损格式如 PNG(带或不带压缩)。
如果问题在于图像大小:
复制/粘贴不可能改变图像大小,因此需要其他解释。
对于楼主上述操作导致结果太小,我能想到的唯一解释是:
- 该屏幕截图是在图像缩小显示时截取的,因此图像较小。
- 将低分辨率图像粘贴到高分辨率图像中,这会使其看起来更小。
在所有情况下,我的建议是不要使用屏幕截图来复制图像,而是使用您正在使用的产品提供的功能来导出和导入图像。
答案2
虽然我不确定是什么原因导致从 Excel 复制时图像大小/分辨率降低,但我找到了一个(有点黑客的)解决方法,我认为分享可能会有所帮助。关键思想是通过深入研究 Excel 文档的文件结构,我们可以检索原始图像,而无需通过剪贴板。
- 创建要从中检索图像的 Excel 文档的临时副本。(确保您的文档以 .xlsx 扩展名保存。)
- 将复制的 Excel 文档的扩展名从“.xlsx”更改为“.zip”。
- 在此 zip 文件中,您将在“xl/media”子目录下找到电子表格中包含的所有图像。您可以像从任何压缩目录中检索文件一样检索这些图像。
答案3
这是一个自动的解决方法。
从 MS Word 中选择任何嵌入的图像,它将在画图中为您打开它。
它实际上会用您选择的那幅图像 (temp.docx) 保存一个临时 word 文件。然后将其重命名为临时文件夹中的 temp.zip 文件,该文件位于您的 word 文件所在的同一文件夹中。
然后解压缩它。
然后它会查找图形图像并将其移出临时文件夹,进入 Word 文件所在的同一文件夹。文件名称为 image.png。最后它会删除时间文件夹并检索 Word 文件。
===== 在参考中请确保您拥有或包含“Microsoft Scripting Runtime Library”
Sub PaintFromWordDo()
'retrieves jpeg file so you may open it in paint.
'Capture the image to a single word file
'save file to temp and close file
'rename file to zip (from docx o docm)
'see hwether you may execute zip file if not, open the temp folder
'if you can execute zip file, activate the graphic image
Dim p As New Scripting.FileSystemObject
Dim oApp As Object
Dim Myfolder As String
Myfolder = ActiveDocument.Path
Selection.Copy
Documents.Add DocumentType:=wdNewBlankDocument
Selection.PasteAndFormat (wdPasteDefault)
ActiveDocument.SaveAs2 Filename:=Myfolder & "\temp.docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
ActiveWindow.Close
On Error Resume Next
p.DeleteFile Myfolder & "\image1.png"
On Error GoTo 0
p.CreateFolder Myfolder & "\temp"
p.MoveFile Myfolder & "\temp.docx", Myfolder & "\temp\temp.zip"
Set oApp = CreateObject("Shell.Application")
oApp.NameSpace(Myfolder & "\temp").CopyHere oApp.NameSpace(Myfolder & "\temp\temp.zip").Items
p.MoveFile Myfolder & "\temp\word\media\image1.png", Myfolder & "\"
Set p = Nothing
p.DeleteFolder Myfolder & "\temp", True
ActiveDocument.FollowHyperlink Myfolder & "\image1.png"
End Sub