我想在gnuplot
中创建一个PNG图像,并在MS-Word
中使用它。但是,如果我使用
set terminal pngcairo enhanced font "Times New Roman,12.0" size 15cm,11cm
质量证明质量很差。我读到GNUPLOT
仅使用72dpi
。有没有办法增加这个数字?
答案 0 :(得分:2)
只需以像素为单位指定所需的分辨率,而不是以厘米为单位:
set terminal pngcairo enhanced font "Times New Roman,12.0" size 1500,1100
将生成宽1500像素,高1100像素的图像。另请参阅help pngcairo
:
输出的默认大小为640 x 480像素。
size
选项将此更改为用户请求的任何内容。默认情况下为X. 和Y尺寸采用像素,但其他单位是可能的 (目前厘米和英寸)。以厘米或英寸为单位的尺寸 假设分辨率为72 dpi,则转换为像素。
答案 1 :(得分:0)
我想知道同一件事,例如具有默认的DPI选项作为输出(例如,当您始终需要以相同大小将其导入到powerpoint中时)。
我写了一个简短的python脚本,该脚本将必要的信息添加到了标头中(可能不是很干净,但是可以在python 3上正常工作)。 您只需要更改所需的文件名和DPI。 我现在使用gnuplot system()命令自动调用此脚本,在打印打印图后更改DPI。
干杯, 亚历克斯
filename = '/test.png' #path to file
dpi = 300. #dpi you want
####
import binascii
DpM = dpi/0.0254 #dots per meter
DpM_hex = ('%08x' % (int(DpM)))
chunkType = "70485973" #type: pHYS
length = ('%08x' % (int(9))) #length is 9
str_con = chunkType + DpM_hex + DpM_hex + "01"
crc = ('%08x' % (binascii.crc32(binascii.unhexlify(str_con.encode('utf-8')))))
output_str = length + str_con + crc
try:
with open(filename, 'rb') as f:
content = f.read()
png_str = (binascii.hexlify(content)).decode('utf-8')
if png_str.find(length+chunkType)>=0:
pos1 = png_str.find(length+chunkType)
pos2 = pos1+len(output_str)
png_new = png_str[:pos1] + output_str + png_str[pos2:]
else:
pos = 66 #position where additional chunk is inserted, = end of mandatory PNG header info
png_new = png_str[:pos] + output_str + png_str[pos:]
with open(filename, 'w+b') as f:
f.write(binascii.unhexlify(png_new.encode('utf-8')))
f.close()
print("Done")
print(filename)
print("Done")