b2c信息网

您现在的位置是:首页 > 今日新闻 > 正文

今日新闻

c缩小图片源码(c语言图片缩放)

hacker2022-07-06 23:29:21今日新闻102
本文目录一览:1、如何用实现图片的放大缩小与去阴影?能用C语言写出实现的算法吗?2、

本文目录一览:

如何用实现图片的放大缩小与去阴影?能用C语言写出实现的算法吗?

bmp图片, 缩小没有问题, 根据缩小比例计算然后采样组成新文件就行了. .

放大的话会失真, 其实就是根据比例重新计算坐标对应位置并插值.

这两个难度不大,但用C写代码不少. 建议你可以自己动手,任何不会的环节都可以追问.因为一般回答懒得给你敲几百行代码.

去阴影不知道你指的是什么.

求JPEG图像压缩技术及实现源程序 VC++/MFC

冈萨雷斯 数字图像处理第二版,很不错的。网上有很多的下载。

静图像压缩.zip

这个是源码,C语言的。

关于数字图像处理的书还有很多,楼主可以找找看,建议去CSDN多泡泡

求助:VC如何实现图片的放大和缩小?

用StretchBlt函数即可实现,参考代码如下:

void CImgWnd::OnPaint()

{

        CPaintDC dc(this); // device context for painting

        //获得窗口大小

        CRect r;

        GetClientRect(r);

        //填充背景

        HBRUSH brush = (HBRUSH)::GetStockObject(GRAY_BRUSH);

        ::FillRect(dc.m_hDC,r,brush);

        dc.SetStretchBltMode(HALFTONE);

        //将位图选进设备场景中

        CDC memdc;

        memdc.CreateCompatibleDC( dc );

        CBitmap* pOldBmp= memdc.SelectObject(m_bmpImage);

        //获得位图参数

        BITMAP bmp;

        m_bmpImage.GetBitmap(bmp);

        //开始缩放

        switch(m_nStrechType)

        {

        case STRECH_1_1://1:1

                        dc.BitBlt(r.left,r.top,r.Width(),r.Height(),memdc,0,0,SRCCOPY);

                break;

        case STRECH_FULL_X://按宽度

                dc.StretchBlt(r.left,r.top,r.Width(),bmp.bmHeight,memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                break;

        case STRECH_FULL_Y://按高度

                dc.StretchBlt(r.left,r.top,bmp.bmWidth,r.Height(),memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                break;

        case STRECH_FULL://充满窗口

                dc.StretchBlt(r.left,r.top,r.Width(),r.Height(),memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                break;

        case STRECH_CENTER://居中显示,大小为窗口的一半

                dc.StretchBlt(r.Width()/4,r.Height()/4,r.Width()/2,r.Height()/2,memdc,0,0,

                        bmp.bmWidth,bmp.bmHeight,SRCCOPY);

                break;

        }

        //还原

        memdc.SelectObject(pOldBmp);

}

如何用c语言实现压缩图片内存大小

是(row,col,value),这样把所有不为零的值组成一个向量。这种存储方式比二维数组节省了不少空间,当然还可以进一步节省,因为三元组里面row或者col重复存储了,一行或者一列存一次就行了,按这种思路走下去就是行压缩存储了。

那具体什么是行压缩存储呢?行压缩存储的思想就是,把所有不为零的值按行访问的顺序组成一个向量,然后再把每一行值不为0的列的下标存下来,这个两个向量的大小和稀疏矩阵中不为0的值得个数相同,当然要实现对行压缩矩阵的访问,还要把每一行的不为0的列的下标在第二个向量中开始的位置存下来,有人把这个叫做指针。有了这三个向量就可以实现对矩阵实现高效的按行访问了。行压缩存储比三元组优秀的不仅是空间的压缩,还有就是行访问时的高效。三元组如果是有序的,可以二分查找来访问一行,但是行压缩存储按行访问时的时间复杂度是常数级的。 大家可以参考下面这个行压缩矩阵示意图:

发表评论

评论列表

  • 边侣栖迟(2022-07-07 00:04:22)回复取消回复

    SelectObject(pOldBmp);}如何用c语言实现压缩图片内存大小是(row,col,value),这样把所有不为零的值组成一个向量。这种存储方式比二维数组节省了不少空间,当然还可以进一步节省,因为三元组

  • 孤央粢醍(2022-07-07 06:49:41)回复取消回复

    现的算法吗?[editor-custom-image-flag]bmp图片, 缩小没有问题, 根据缩小比例计算然后采样组成新文件就行了. .放大的话会失真, 其实就是根据比例重新计算坐标对应位置并插值.这两个难度不大,但用C写代码不少. 建议你可以自己动手,任何

  • 颜于北念(2022-07-07 05:43:44)回复取消回复

                      bmp.bmWidth,bmp.bmHeight,SRCCOPY);                break;        case STRECH_FULL_Y://按高度                dc.