2 coder delphi Coder_delphi 于 2013.12.19 11:08 提问

请问tiff文件中Strip块的大小如何设置

我从一个tiff文件中读取了像素块,想自己编写代码把像素块写入到一个新的tiff文件中,但是写入后图像显示不完全,有的地方被黑色覆盖。查找后发现每个Strip块的大小与原文件不同。请问Strip块的大小该如何设置。
这是我设置Strip块大小的代码

m_ScripRows = 8 * 1024;//RowsPerStrip
    if(m_PlanarConfig == 1)
    {
        m_ScriptCount = floor((double)(m_SizeDoc.cy + m_ScripRows - 1) / m_ScripRows);//stripCount
    }
    else
    {
        m_ScriptCount = floor((double)(m_SizeDoc.cy + m_ScripRows - 1) / m_ScripRows) * m_SamplesPerPixel;
    }
    int PerScripByte = m_PixSize / m_ScriptCount;
    int LastScripByte = 0;
    if(m_PixSize % m_ScriptCount == 0)//m_PixSize像素点总大小
    {
        LastScripByte = PerScripByte;
    }
    else
    {
        LastScripByte = PerScripByte + (m_PixSize % m_ScriptCount);
    }
    delete[] m_ScripArr;//存放Strip的OffSet
    delete[] m_ScripBytes;//存放Strip大小
    if(m_ScriptCount != 0)
    {
        m_ScripArr = new int[m_ScriptCount];
        m_ScripBytes = new int[m_ScriptCount];
        //m_ScripArr[0] = 0x0008;
        //int tmp[470];
        if(m_ScriptCount >= 1)
        {
            for(int i = 0; i < m_ScriptCount - 1; i++)
            {
                m_ScripBytes[i] = PerScripByte;
                m_ScripArr[i] = 0x0008 + i* PerScripByte;
            }
            m_ScripArr[m_ScriptCount - 1] = 8 + (m_ScriptCount - 1)* PerScripByte;
            m_ScripBytes[m_ScriptCount - 1] = LastScripByte;
        }
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!