一种P2格式下pgm文件数据写入的方式

pgm文件是一种可移植灰度图片,有P2和P5两种格式,今天给大家分享一种P2格式下写入pgm文件数据的方法。

int write_ASCII(FILE *outputFile, pgmImage *pgm)
{
    /* write magic number, size & gray value */
    size_t nBytesWritten = fprintf(outputFile, "P2\n%d %d\n%d\n", (*pgm).width, (*pgm).height, (*pgm).maxGray);

    /* check that dimensions wrote correctly */
    if (nBytesWritten < 0)
    {
        /* failed size sanity check    */
        /* free up the memory          */
        free_pgm(pgm);
        /* return error code */
        return ERROR_OUTPUT_FAILED;
    } /* dimensional write failed */

    /* pointer for efficient write code */
    for (unsigned char *nextGrayValue = (*pgm).imageData; nextGrayValue < (*pgm).imageData + (*pgm).nImageBytes; nextGrayValue++)
    {
        /* per gray value         */
        /* get next char's column */
        int nextCol = (nextGrayValue - (*pgm).imageData + 1) % (*pgm).width;

        /* write the entry & whitespace */
        nBytesWritten = fprintf(outputFile, "%d%c", *nextGrayValue, (nextCol ? ' ' : '\n'));

        /* sanity check on write */
        if (nBytesWritten < 0)
        {
            /* failed size sanity check    */
            /* free up the memory          */
            free_pgm(pgm);
            /* return error code */
            return ERROR_OUTPUT_FAILED;
        } /* data write failed   */
    }     /* per gray value */

    return FUNCTION_SUCCESS;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值