如何使用gnuplot创建超过72dpi的PNG图像?

时间:2017-08-03 12:44:50

标签: png gnuplot resolution dpi

我想在gnuplot中创建一个PNG图像,并在MS-Word中使用它。但是,如果我使用

set terminal pngcairo enhanced font "Times New Roman,12.0" size 15cm,11cm  
质量证明质量很差。我读到GNUPLOT仅使用72dpi。有没有办法增加这个数字?

2 个答案:

答案 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")