linux怎么在lcd显示一张400*240的照片并放在中间
1)在LCD上显示BMP或JPEG图片的主流程图
首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下:
mknodfb0c290
在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形文件数据,把图象的RGB值映射到显存中,这部分是图象显示的核心。对于JPEG格式的图片,要先经过JPEG解码才能得到RGB数据,本项目中直接才用现成的JPEG库进行解码。对于bmp格式的图片,则可以直接从文件里面提取其RGB数据。要从一个bmp文件里面把图片数据阵列提取出来,首先必须知道bmp文件的格式。下面来详细介绍bmp文件的格式。
图1
2)bmp位图格式分析
位图文件可看成由四个部分组成:位图文件头、位图信息头、彩色表和定义位图的字节阵列。如图2所示。
图2
文件头中各个段的地址及其内容如图3。
图3
位图文件头数据结构包含BMP图象文件的类型,显示内容等信息。它的数据结构如下定义:
Typedefstruct
{
intbfType;//表明位图文件的类型,必须为BM
longbfSize;//表明位图文件的大小,以字节为单位
intbfReserved1;//属于保留字,必须为本0
intbfReserved2;//也是保留字,必须为本0
longbfOffBits;//位图阵列的起始位置,以字节为单位
}BITMAPFILEHEADER;
2.1)信息头中各个段的地址及其内容如图4所示。
图4
位图信息头的数据结构包含了有关BMP图象的宽,高,压缩方法等信息,它的C语言数据结构如下:
Typedefstruct{
longbiSize;//指出本数据结构所需要的字节数
longbiWidth;//以象素为单位,给出BMP图象的宽度
longbiHeight;//以象素为单位,给出BMP图象的高度
intbiPlanes;//输出设备的位平面数,必须置为1
intbiBitCount;//给出每个象素的位数
longbiCompress;//给出位图的压缩类型
longbiSizeImage;//给出图象字节数的多少
longbiXPelsPerMeter;//图像的水平分辨率
longbiYPelsPerMeter;//图象的垂直分辨率
longbiClrUsed;//调色板中图象实际使用的颜色素数
longbiClrImportant;//给出重要颜色的索引值
}BITMAPINFOHEADER;
2.2)对于象素小于或等于16位的图片,都有一个颜色表用来给图象数据阵列提供颜色索引,其中的每块数据都以B、G、R的顺序排列,还有一个是reserved保留位。而在图形数据区域存放的是各个象素点的索引值。它的C语言结构如图5所示。
图5颜色表数据结构
2.3)对于24位和32位的图片,没有彩色表,他在图象数据区里直接存放图片的RGB数据,其中的每个象素点的数据都以B、G、R的顺序排列。每个象素点的数据结构如图6所示。
图6图象数据阵列的数据结构
2.4)由于图象数据阵列中的数据是从图片的最后一行开始往上存放的,因此在显示图象时,是从图象的左下角开始逐行扫描图象,即从左到右,从下到上。
2.5)对S3C2410或PXA255开发板上的LCD来说,他们每个象素点所占的位数为16位,这16位按B:G:R=5:6:5的方式分,其中B在最高位,R在最低位。而从bmp图象得到的R、G、B数据则每个数据占8位,合起来一共24位,因此需要对该R、G、B数据进行移位组合成一个16位的数据。移位方法如下:
b>>=3;g>>=2;r>>=3;
RGBValue=(r<<11|g<<5|b);
基于以上分析,提取各种类型的bmp图象的流程如图7所示
图7
3)实现显示任意大小的图片
开发板上的LCD屏的大小是固定的,S3C2410上的LCD为:240*320,PXA255上的为:640*480。比屏幕小的图片在屏上显示当然没问题,但是如果图片比屏幕大呢?这就要求我们通过某种算法对图片进行缩放。
缩放的基本思想是将图片分成若干个方块,对每个方块中的R、G、B数据进行取平均,得到一个新的R、G、B值,这个值就作为该方块在LCD屏幕上的映射。
缩放的算法描述如下:
(1)、计算图片大小与LCD屏大小的比例,以及方块的大小。为了适应各种屏幕大小,这里并不直接给lcd_width和lcd_height赋值为240和320。而是调用标准的接口来获取有关屏幕的参数。具体如下:
//Getvariablescreeninformation
if(ioctl(fbfd,FBIOGET_VSCREENINFO,&vinfo)){
printf("Errorreadingvariableinformation.");
exit(3);
}
unsignedintlcd_width=vinfo.xres;
unsignedintlcd_height=vinfo.yres;
计算比例:
widthScale=bmpi->width/lcd_width;
heightScale=bmpi->height/lcd_height;
本程序中方块的大小以如下的方式确定:
unsignedintpaneWidth=
unsignedintpaneHeight=;
符号代表向上取整。
(2)、从图片的左上角开始,以(i*widthScale,j*heightScale)位起始点,以宽paneWidth高paneHeight为一个小方块,对该方块的R、G、B数值分别取平均,得到映射点的R、G、B值,把该点作为要在LCD上显示的第(i,j)点存储起来。
这部分的程序如下:
//-------------取平均--------
for(i=0;i<now_height;i++)
{
for(j=0;j<now_width;j++)
{
color_sum_r=0;
color_sum_g=0;
color_sum_b=0;
for(m=i*heightScale;m<i*heightScale+paneHeight;m++)
{
for(n=j*widthScale;n<j*widthScale+paneWidth;n++)
{
color_sum_r+=pointvalue[m][n].r;
color_sum_g+=pointvalue[m][n].g;
color_sum_b+=pointvalue[m][n].b;
}
}
RGBvalue_256->r=div_round(color_sum_r,paneHeight*paneWidth);
RGBvalue_256->g=div_round(color_sum_g,paneHeight*paneWidth);
RGBvalue_256->b=div_round(color_sum_b,paneHeight*paneWidth);
}
}
4)图片数据提取及显示的总流程
通过以上的分析,整个图片数据提取及显示的总流程如图8所示。
图8
图像显示应用程序:
#include<errno.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<sys/ioctl.h>
#include<unistd.h>
#include<stdint.h>
#include<stdio.h>
#include<stdlib.h>
#include<asm/types.h>
#include<linux/videodev2.h>
#include<sys/mman.h>
#include<string.h>
#include<malloc.h>
#include<linux/fb.h>
#include<jpeglib.h>
#include<jerror.h>
structfb_dev
{
//forframebuffer
intfb;
void*fb_mem;//framebuffermmap
intfb_width,fb_height,fb_line_len,fb_size;
intfb_bpp;
}fbdev;
//得到framebuffer的长、宽和位宽,成功则返回0,失败返回-1
intfb_stat(intfd)
{
structfb_fix_screeninfofb_finfo;
structfb_var_screeninfofb_vinfo;
if(ioctl(fd,FBIOGET_FSCREENINFO,&fb_finfo))
{
perror(__func__);
return(-1);
}
if(ioctl(fd,FBIOGET_VSCREENINFO,&fb_vinfo))
{
perror(__func__);
return(-1);
}
fbdev.fb_width=fb_vinfo.xres;
fbdev.fb_height=fb_vinfo.yres;
fbdev.fb_bpp=fb_vinfo.bits_per_pixel;
fbdev.fb_line_len=fb_finfo.line_length;
fbdev.fb_size=fb_finfo.smem_len;
return(0);
}
//转换RGB888为RGB565(因为当前LCD是采用的RGB565显示的)
unsignedshortRGB888toRGB565(unsignedcharred,unsignedchargreen,unsignedcharblue)
{
unsignedshortB=(blue>>3)&0x001F;
unsignedshortG=((green>>2)<<5)&0x07E0;
unsignedshortR=((red>>3)<<11)&0xF800;
return(unsignedshort)(R|G|B);
}
//释放framebuffer的映射
intfb_munmap(void*start,size_tlength)
{
return(munmap(start,length));
}
//显示一个像素点的图像到framebuffer上
intfb_pixel(void*fbmem,intwidth,intheight,intx,inty,unsignedshortcolor)
{
if((x>width)||(y>height))
return(-1);
unsignedshort*dst=((unsignedshort*)fbmem+y*width+x);
*dst=color;
return0;
}
intmain(intargc,char**argv)
{
intfb;
FILE*infile;
structjpeg_decompress_structcinfo;
intx,y;
unsignedchar*buffer;
chars[15];
structjpeg_error_mgrjerr;
if((fb=open("/dev/fb0",O_RDWR))<0)//打开显卡设备
{
perror(__func__);
return(-1);
}
//获取framebuffer的状态
fb_stat(fb);//获取显卡驱动中的长、宽和显示位宽
printf("framebuffer:%dx%d,%dbpp,0x%xbyte=%d\n",
fbdev.fb_width,fbdev.fb_height,fbdev.fb_bpp,fbdev.fb_size,fbdev.fb_size);
//映射framebuffer的地址
fbdev.fb_mem=mmap(NULL,fbdev.fb_size,PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
if((infile=fopen("lcd.jpg","rb"))==NULL)
{
fprintf(stderr,"open%sfailed\n",s);
exit(-1);
}
ioctl(fb,FBIOBLANK,0);//打开LCD背光
cinfo.err=jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
//导入要解压的Jpeg文件infile
jpeg_stdio_src(&cinfo,infile);
//读取jpeg文件的文件头
jpeg_read_header(&cinfo,TRUE);
//开始解压Jpeg文件,解压后将分配给scanline缓冲区,
jpeg_start_decompress(&cinfo);
buffer=(unsignedchar*)malloc(cinfo.output_width
*cinfo.output_components);
y=0;
while(cinfo.output_scanline<cinfo.output_height)
{
jpeg_read_scanlines(&cinfo,&buffer,1);
if(fbdev.fb_bpp==16)
{
unsignedshortcolor;
for(x=0;x<cinfo.output_width;x++)
{
color=RGB888toRGB565(buffer[x*3],
buffer[x*3+1],buffer[x*3+2]);
fb_pixel(fbdev.fb_mem,fbdev.fb_width,fbdev.fb_height,x,y,color);
}
}
elseif(fbdev.fb_bpp==24)
{
memcpy((unsignedchar*)fbdev.fb_mem+y*fbdev.fb_width*3,buffer,
cinfo.output_width*cinfo.output_components);
}
y++;
}
//完成Jpeg解码,释放Jpeg文件
jpeg_finish_decompress(&cinfo);
jpeg_destroy_decompress(&cinfo);
//释放帧缓冲区
free(buffer);
//关闭Jpeg输入文件
fclose(infile);
fb_munmap(fbdev.fb_mem,fbdev.fb_size);//释放framebuffer映射
close(fb);
}
文章是我转载的http://blog.chinaunix.net/uid-25120309-id-3794265.html
但是测试发现编译无法通过,
报错:
LCD.C:(.text+0x384):undefinedreferenceto`jpeg_std_error(jpeg_error_mgr*)'
LCD.C:(.text+0x3a0):undefinedreferenceto`jpeg_CreateDecompress(jpeg_decompress_struct*,int,unsignedint)'
LCD.C:(.text+0x3b0):undefinedreferenceto`jpeg_stdio_src(jpeg_decompress_struct*,_IO_FILE*)'
LCD.C:(.text+0x3c0):undefinedreferenceto`jpeg_read_header(jpeg_decompress_struct*,int)'
LCD.C:(.text+0x3cc):undefinedreferenceto`jpeg_start_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x410):undefinedreferenceto`jpeg_read_scanlines(jpeg_decompress_struct*,unsignedchar**,unsignedint)'
LCD.C:(.text+0x59c):undefinedreferenceto`jpeg_finish_decompress(jpeg_decompress_struct*)'
LCD.C:(.text+0x5a8):undefinedreferenceto`jpeg_destroy_decompress(jpeg_decompress_struct*)'
collect2:ldreturned1exitstatus
经过在网上查找,确定是JPEG解码库问题,我首先在Ubuntu安装了jpeg库
libjpeg库的安装
在源文件里将
#include<jpeglib.h>
改成
extern"C"{
#include<jpeglib.h>
}
这里是有问题的,注意gcc会把LCD.C当成c++编译,而把LCD.c当成C语言编译,改成lcd.c后就没有上边红色部分错误
由于是有的是JPEG解码库,链接的时候需要加上-ljpeg选项
使用命令arm-linux-gcc-ljpegLCD.C-oLCD#add-ljpegoption编译源文件成功,
文章知识点与官方知识档案匹配
CS入门技能树Linux入门初识Linux
23099人正在系统学习中
点击阅读全文
打开CSDN,阅读体验更佳
开发板lcd上显示图片
#include#include#include"lcd.h"#include"regs.h"externconstunsignedchargImage_6[261120];//externconstunsignedchargImage_5[261120];externconstunsignedchargImage_a[83784];externconstunsignedchartest[];staticunsignedshortdrawb[272][480];//itisapublicdrawareaunsignedcharmask[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsignedcharmat[]={0x00,0x00,0x10,0x38,0x6c,0xc6,0xfe,0xc6,0xc6,0xc6,0xc6,0x00,0x00,0x00,0x00,0x00};
lcd屏幕显示bmp、jpg图片
文章目录BMP图片显示:jpeg压缩过程RGB:ARGB32bit4ByteA:【24-31】R:【16-23】G:【8-15】B:【0-7】图片显示显示思路:(1)打开液晶屏(open),进行内存映射(mmap)(2)打开图片,读取颜色数据(3)将读取到的颜色数据映射到液晶屏(4)关闭图片文件,液晶屏,解除内存映射BMP图片显示:没有经过压缩的二进制位图文件,文件较大,获取颜色数据方便一张800*480的bmp格式的图片8004803=1152000Byt
继续访问
最新发布【正点原子I.MX6U-MINI应用篇】6、嵌入式Linux在LCD屏幕上显示字符
嵌入式Linux在LCD屏幕上显示字符
继续访问
数码相框(十六、LCD显示JPG格式图片)
注:本人已购买韦东山老师第三期项目视频,内容来源《数码相框项目视频》,只用于学习记录,如有侵权,请联系删除。1.LCD如何显示一张图片?假如下图是是我们的JZ2440开发板,它有一个块显存、LCD控制器、LCD显示屏,LCD是如何显示张图片的呢?如上图所示:①图片的颜色数据存放在显存,LCD控制器会自动从显存取出图片的一个个颜色数据发送给LCD,取到最后又从头开始的循环取数据,最终把一张图片的全部颜色数据发送到LCD上,从而在LCD显示出该图片;②显存存放的数据是RGB数据;.
继续访问
linux滚动屏幕,基于MIDP1.0实现屏幕滚动(转)
本例介绍了一个常用的编程技巧,就是如何基于MIDP1.0实现屏幕的滚动效果。在MIDP2.0可以借助LayerManager的的“可视窗口”来实现。MIDP1.0通过变化坐标系来实现屏幕的滚动效果,只要借助Graphics.translate()方法。packagecom.j2medev.translate;importjavax.microedition.midlet.*;importja...
继续访问
Linux系统LCD显示图片的原理,linux驱动开发:用户空间操作LCD显示简单的图片【转】...
上一章我们简单介绍了LCD的一些基本原理。当然更深奥的还有,比如gamma,dither,HUE,satuation.OSD等等.我们知道我们是用framebuffer来实现显示的.显存:framebuffer.由DDRAM中划去一部分内存供显存使用.从而操作lcd相当于操作显存.lcd控制器(s5pv210里面有lcd控制器)会周期的获取framebuffer中的数据。经过处理丢给显示屏的lc...
继续访问
linux中如何在fb上显示
framebuffer帧缓冲https://blog.csdn.net/readnap/article/details/83006523帧缓冲(framebuffer)是Linux系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。framebuffer机制模仿显卡的功能,将显卡硬件结构抽象为一系列的数据结构,可以通过fra...
继续访问
如何让linuxfb0显示命令行,linux–如何将/dev/fb0用作来自用户空间的控制台,或者将文本输出到它...
所以我有一个PalmPre(原始P100EWW)模型,我启用了开发人员模式,并安装了DebianSqueezechroot.效果很好.我计划将这个用于任何东西(bittorrentpeer,webserver)但是一部手机.我注意到我是否做了猫/dev/urandom>/dev/fb0它实际上将随机像素写入屏幕,直到生成设备错误上没有剩余空格.真棒,现在我可以使用显示...
继续访问
linux如何查看fb中分辨率_linux下直接写framebuffer(fb0)的方式显示bmp图像
linux下的显示设备就是/dev/fb0,往该设备写入的数据会显示在屏幕上,所以我们可以通过直接写framebuffer这个/dev/fb0设备来实现bmp图像的显示,而不用管是在shell文本方式下还是在其他gnome、qt、gtk、wayland等图形模式下,都能显示出来。当前前提是你的linux下必须具有该设备并支持读写(无特殊处理的linux都有该设备)。代码(支持16位、24位或32...
继续访问
Linux下LCD编程(fb设备_console_汉化)
http://blog.csdn.net/leichelle/article/details/7417367
继续访问
如何改造Linux虚拟终端显示文字
CJKTTY补丁是什么,为什么我写了它当你不使用X的时候,打开电脑,你就在使用虚拟终端。这么多年来它工作的很好,直到它来到了中国。包含中文字符的文件名无法正确显示,中文文档无法阅读。当然可以使用X,但是我为什么不能让终端也能显示汉字呢?如果在X下我能让屏幕显示汉字,终端下一定也能。为此我开始了internet上的搜寻。我找到了fbterm,这是个可以利用/dev/
继续访问
LCD图片显示、触摸屏、音乐播放、缩放图片和播放视频
讲解LCD的原理和mmap函数,BMP格式图片的的显示,触摸屏的概念和原理以及触摸屏输入的解读,以及音乐视频播放和图片缩放。
继续访问
undefinedreferenceto`jpeg_std_error(jpeg_error_mgr*)
背景linux+QTBMP图片转JPG#include<jpeglib.h>编译错误:root@happy-virtual-machine:/home/happy/Lee/Detector2#makearm-linux-g++-Wl,-O1-Wl,-rpath,/opt/qt-4.7.1/lib-oDetector2main.o...
继续访问
linux屏幕滑动效果实现代码,使用swipe方法模拟屏幕滑动与手势密码绘制
前言App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码。目前很多App在启动时,都存在启动时的引导动画或者加载上下文内容时需要手动上滑或者下滑加载页面,所以在自动化测试的过程中模拟手的滑动操作看起来就很重要了;第二个比较重要的是模拟手动绘制九宫格完成手势密码的设置,这种手势密码在我了解的范围内,大多在金融类的app中最常见,还有一些对用户信息保密性较好的app中,所以,模拟绘制手势密码也...
继续访问
Linux下LCD图片放大缩小实现,仿QQ空间滑动图片放大缩小控件
先来看一下效果:scrollzoom_listview.gif一、设计思路与实现步骤1、本例是通过重写ListView来实现的,头部的图片是ListView的HeadView。定义一个headview.xml布局文件,在这个布局文件中放一个ImageView,并给IamgeView设置一个初始高度2、实现下拉图片放大当ListView处于顶部的时候下拉实现图片放大,这里要用的一个核心的方法是ove...
继续访问
无法解析的外部符号jpeg_std_error
1>dlib.lib(png_loader.obj):errorLNK2001:无法解析的外部符号png_set_sig_bytes1>dlib.lib(png_loader.obj):errorLNK2001:无法解析的外部符号png_sig_cmp1>dlib.lib(png_loader.obj):errorLNK2001:无法解析的外部符号...
继续访问
LinuxLCD驱动(二)——图形显示
BMP和JPEG图形显示程序1)在LCD上显示BMP或JPEG图片的主流程图首先,在程序开始前。要在nfs/dev目录下创建LCD的设备结点,设备名fb0,设备类型为字符设备,主设备号为29,次设备号为0。命令如下:mknodfb0c290在LCD上显示图象的主流程图如图1所示。程序一开始要调用open函数打开设备,然后调用ioctl获取设备相关信息,接下来就是读取图形
继续访问
嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)
帧缓冲框架是Linux下专门为显示类设备设计的接口,目的是将硬件和软件层分离开,方便应用层的编程,也方便应用层程序移植。帧缓冲框架向驱动层和应用层分别提供了一套标准接口,驱动层按照框架编写驱动,应用层按照框架编写应用程序。帧缓冲在/dev目录下生成的标准节点是fb,比如:/dev/fb0,/dev/fb1等等。
继续访问
linux如何查看fb中分辨率_通过LinuxFrameBuffer将像素绘制到屏幕上
最近,我对一个奇怪的想法感到震惊,他想从/dev/urandom中获取输入,将相关字符转换为随机整数,然后使用这些整数作为像素rgb/xy值来绘制到屏幕上。我已经做过一些研究(在StackOverflow和其他地方),许多建议您可以直接直接写入/dev/fb0,因为它是设备的文件表示形式。不幸的是,这似乎没有产生任何视觉上明显的结果。我找到了一个来自QT教程(不再可用)的示例C程序
圆明园的文字图片资料
圆明园坐落在北京西郊海淀,与颐和园紧相毗邻。它始建于康熙46年(1707年),由圆明、长春、万春(绮春)三园组成。有园林风景百余处,建筑面积逾16万平方米,是清朝帝王在150余年间创建和经营的一座大型皇家宫苑。清王朝倾全国物力,集无数精工巧匠,填湖堆山,种植奇花异木,集国内外名胜40景,建成大型建筑物145处,内收难以计数的艺术珍品和图书文物。在这些建筑中,除具有中国风格的庭院外,长春园内还有海晏堂、远瀛观等西洋风格的建筑群,被誉为“万园之园”。1900年八国联军入侵北京烧杀掳掠,慈禧太后挟光绪皇帝逃奔西安,八旗兵丁,土匪地痞即趁火打劫把园残存和陆续基本修复的共约近百座建筑物,皆拆抢一空,使圆明的建筑和古树名木遭到彻底毁灭。其后,圆明园的遗物,又长期遭到官僚、军阀、奸商巧取豪夺,乃至政府当局的有组织地损毁。北洋政府的权贵们包括某些对圆明园遗址负有保护责任者,都倚仗权势,纷纷从圆明园内运走石雕、太湖石等,以修其园宅。那侵略者不仅抢夺了那珍贵的历史文物,而且毫不留情地把它化成灰烬。占地350公顷(5200余亩),其中水面面积约140公顷(2100亩),圆明园的陆上建筑面积比故宫还多一万平方米,水域面积又等于一个颐和园,总面积竟等于8.5个紫禁城!
它继承了中国三千多年的优秀造园传统,既有宫廷建筑的雍容华贵,又有江南水乡园林的委婉多姿,同时,又吸取了欧洲的园林建筑形式,把不同风格的园林建筑融为一体,在整体布局上使人感到和谐完美。真可谓:"虽由人做,宛自天开"。圆明园不仅以园林著称,而且也是一座收藏相当丰富的皇家博物馆。法国大作家雨果曾说:"即使把我国所有圣母院的全部宝物加在一起,也不能同这个规模宏大而富丽堂皇的东方博物馆媲美"。园内各殿堂内装饰有难以计数的紫檀木家具,陈列有许多国内外稀世文物。园中文源阁是全国四大皇家藏书楼之一。园中各处藏有《四库全书》、《古今图书集成》、《四库全书荟要》等珍贵图书文物。
圆明园,曾以其宏大的地域规模、杰出的营造技艺、精美的建筑景群、丰富的文化收藏和博大精深的民族文化内涵而享誉于世,被誉为“一切造园艺术的典范”和“万园之园”。
1860年10月6日英法联军洗劫圆明园,文物被劫掠,18日-19日,园中的建筑被烧毁。至今奇迹和神话般的圆明园变成一片废墟,只剩断垣残壁,供游人凭吊。
名称由来:
“圆明园”,是由康熙皇帝命名的。玄烨御书三字匾额,就悬挂在圆明园殿的门楣上方。对这个园名雍正皇帝有个解释,说“圆明”二字的含义是:“圆而入神,君子之时中也;明而普照,达人之睿智也。”意思是说,“圆”是指个人品德圆满无缺,超越常人;“明”是指政治业绩明光普照,完美明智。这可以说是封建时代统治阶级标榜明君贤相的理想标准。
另外,“圆明”是雍正皇帝自皇子时期一直使用的佛号,雍正皇帝崇信佛教,号“圆明居士”,并对佛法有很深的研究。著有《御选语录》19卷和《御制拣魔辨异录》。在清初的佛教宗派格局中,雍正皇帝以禅门宗匠自居,并以“天下主”的身份对佛教施以影响,努力提倡“三教合一”和“禅净合一”,是佛教发展史上非常重要的人物。康熙皇帝在把园林赐给胤禛(后为雍正皇帝)时,亲题园名为“圆明园”正是取意于雍正的佛号“圆明”。
【长春仙馆】长春仙馆,建于乾隆九年,公元一七四四年。长春仙馆位于前湖西面,乾隆即位前曾居于此,有殿门3间,正殿5间。
【镂月开云】镂月开云原称牡丹亭,位于后湖东南角,建筑木料以捕木为主,殿顶覆二色琉璃瓦;乾隆即位后,改称“镂月开云”,乾隆三十一年,又亲题"纪思堂"匾额;院内植各色牡丹数百株。
【碧桐书院】碧桐书院,建于乾隆九年,公元一七四四年。位于后湖东北角,是一座书房。【上下天光】上下天光位于后湖西北,为两层楼宇,登楼可尽览湖光水色。
【杏花春馆】杏花春馆位于上下天光西面,馆舍东西两面临湖,西院有杏花村,馆前有菜圃。
【坦坦荡荡】坦坦荡荡紧靠后湖西岸,是圆明园中专设的养鱼区,四周建置馆舍,中间开凿大水池。
【万方安和】万方安和位于杏花春馆西面,建于水上的字形大型殿堂楼宇,有33间。
【山高水长楼】山高水长楼位于坦坦荡荡西面,为一座西向的两层楼房,上下各9间;前环小溪后拥连岗,中间地势平坦,是专门设宴招待外藩之处,也经常举行比武赛箭。
【同乐园】同乐园位于后湖东北面,是园中最大的戏台,有清音阁3层,宽10丈,下层设演特技的机轴;南有化妆室5间,北有观戏楼5间;乾隆间每年从正月十三起在此举行酬节会,连日宴赏宗室王公及外藩陪臣并赏听戏,每逢皇帝生日,也在此演戏庆祝数日。
【安佑宫】安佑宫位于圆明园西北隅,建于乾隆七年,完全仿建故宫太庙,殿内曾陈列康熙、雍正、乾隆遗像。
【水木明瑟】水木明瑟位于后湖以北小园集聚区中央,仿扬州水竹居,内设水力土风扇,是园中最早的观水法。
【舍卫城】舍卫城位于水木明瑟东面,是园中专门开辟的一座小城镇,仿照古印度桥萨罗国首都的城池布局而建,是供奉各种佛像和收藏佛经的地方。城廓呈长方形,南北长、东西宽,四周筑有城墙,共辟4门。城内街道呈十字形,内建殿宇、房舍共326间,用游廊相连接;还建有数座金碧辉煌的牌楼。城前专门开设一条贯穿南北的买卖街,称苏州街,由宫中太监扮作商人开市叫卖,法国教士王致诚对买卖街有比较详尽的记载。
【文源阁】文源阁位于水木明瑟北面,原称四达亭,乾隆南巡浙江后,仿照宁波的明代藏书楼天一阁改建,专门贮藏《四库全书》。
【廓然大公】廓然大公亦称双鹤斋,位于舍卫城东北面,是园中一组较大的建筑,主体建筑北濒大池,园内景色倒映水中犹然两景;另有诗咏堂、菱荷深处等景点。
【西峰秀色】西峰秀色号称园中小庐山,仿照江西庐山改建;后垣的花港观鱼,仿照杭州西湖胜景而建。每年七夕,都在此摆设巧宴盛会。
【四宜书屋】四宜书屋位于廓然大公东北面,有殿堂5间,正殿称安澜园,为乾隆南巡后,仿照杭州湾畔海宁一陈姓隅园改建。
【北远山村】北远山村位于大北门内偏东,稻田遍布,各房舍名称都与农事有关,呈现浓郁田园景色。
【方壶胜境】方壶胜境位于福海水面东北隅,为一座巨大的山字形楼宇。
【蓬莱瑶台】蓬莱瑶台位于福海中央,共有三个岛,结构和布局根据古代画家李思训的“仙山楼阁”画设计;宫门3间,正殿7间,殿前东列畅襟楼,西列神洲三岛,东偏殿为随安室,西偏殿为日日平安报好音;东南面有一渡桥,可通东岛,岛上建有瀛海仙山小亭;西北面有一曲桥,可通北岛,岛上建殿宇3间。
【接秀山房】接秀山房位于福海东南隅,内部装饰全部采用紫檀木漆器,上面都嵌以金银、宝石、象牙等,这些奇珍异宝上都镂刻着山水、楼阁、人物、花木、虫鸟。这种装饰,从设计到刻技都由明末杭州一周姓工匠所创始,故称周制,在我国雕刻史上占有重要地位。
【平湖秋月】平湖秋月位于福海西北隅,造型上融汇了杭州西湖平湖秋月和双峰插云的精华。
【曲院风荷】曲院风荷位于福海西岸同乐园南面,正殿一排5间,仿照杭州西湖曲院改建,跨池还有一座9孔大石桥。
【淳化轩】淳化轩位居长春园正中的主体建筑,建成时适逢《重刻淳化阁贴》竣工,遂将刻板嵌于左右廊的廊壁上,轩并由此得名。《重刻淳化阁贴》刻板144块,共10卷,汇集历代名家99人的真迹;刻成后又拓400部,分赐皇室宗亲、大臣以及直隶、山东、浙江各行宫和名胜地。淳化轩因此成为北京地区著名碑林。
【海岳开襟】海岳开襟建于水池中,台基为圆形,上下两层,汉白玉石凭栏围绕。台上建3层楼宇,下层为海岳开襟,南檐题“青瑶屿”3字;中层为得金阁,题“天心水面”4字;最上层题“乘六龙”3字;台的四面各设牌楼一座。在圆明园的所有楼阁中,这组建筑最为豪华。
【狮子林】狮子林位于长春园东北隅,乾隆皇帝游苏州后,仿建苏州狮子林,先建8景,后续8景,共16景,形成一组别致的小园景区。
【如园】如园位于长春园东南隅,乾隆三十二年南巡至江宁(今南京市)后,仿照明代大将徐达的瞻园建置。
【谐奇趣】是乾隆十六年秋建成的第一座建筑,主体为三层,楼南有一大型海堂式喷水池,设有铜鹅、铜羊和西洋翻尾石鱼组成的喷泉。楼左右两侧,从曲廊伸出八角楼厅,是演奏中西音乐的地方。
【海晏堂】是西洋楼最大的宫殿。主建筑正门向西,阶前有大型水池,池左右呈八字形排引有十二只兽面人身铜像(鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪,十二个属相),每昼夜依次辍流喷水,各一时辰(2小时),正午时刻,十二生肖一齐喷水,俗称“水力钟”。本来是以欧洲风格的裸体女人像,但乾隆皇帝觉得裸体女人不和中国的风俗就改为十二生肖铜像,用青铜制造。
【大水法】是西洋楼最壮观的喷泉。建筑造形为石龛式,酷似门洞。下边有一大型狮子头喷水,形成七层水帘。前下方为椭圆菊花式喷水池,池中心有一只铜梅花鹿,从鹿角喷水八道;两佣有十只铜狗,从口中喷出水柱,直射鹿身,溅起层层浪花。俗称“猎狗逐鹿”。大水法的左右前方,各有一座巨大的喷水塔,塔为方形,十三层,顶端喷出水柱,塔四周有八十八根铜管于,也都一齐喷水。当年,皇帝是坐在对面的观水法,观赏这一组喷泉的,英国使臣马戛尔尼、荷兰使臣得胜等,都曾在这里“瞻仰”过水法奇观。据说这处喷泉若全部开放,有如山洪爆发,声闻里许,在近处谈话须打手势,其壮观程度可想而知。
【观水法】观水法位于远瀛观中轴线南端,主要建筑有安放皇帝宝座的台基,后面立高大的石雕围屏风,两边设巴克鲁门,门两侧各有一座巨型水塔和接收喷水的水池。池旁依势设置各种兽类,呈半圆形,表示兽战和林中逐鹿等游戏;喷水的管口安装有时钟,根据中国传统的计时方法,用12种动物的名字表示一天的12个时辰,每隔1时辰便有1兽的口中向池内喷射水。
【万花阵】万花阵亦称黄花阵,是仿照欧洲的迷宫而建的花园。用四尺高的字图案的雕花砖墙,分隔成若干道迷阵,因而称作“万花阵”。虽然从入口到中心亭的直径距离不过30余米,但因为此阵易进难出,每当中秋之夜,清帝坐在阵中心的圆亭里,太监、宫女们手持黄色彩绸扎成的莲花灯,寻径飞跑,先到者便可领到皇帝的赏物。所以也叫黄花阵或黄花灯。清帝坐在高处,四望莲花灯东流西奔,引为乐事。
【线法山】线法山和线法墙之间,有一条方河,在线法墙下设水箱,置威尼斯城的模型于水箱中,皇帝坐在线法山上观望。
圆明园建筑、林木、砖石皆已荡然无存.宣统末年,当地旗人已在园内的宫殿旧址上筑屋,昔日的皇家园林麦垅相望。1940年以后的日寇占领时期,北京粮食紧张,于是奖励开荒。从这时起,农户陆续入园平山填湖,开田种稻。圆明园这处在清初盛世历经150余年苦心经营的湖山之胜,遂面目全非。
抱歉,图片你去百度图片找吧!
400K的图片到底是多大,论像素的话
图片大小和具体的格式、是否压缩、以及图片主要的色系都有很大的关系。比如,一张图片1024×768如果是bmp的,可能1M多,而如果是jpg,可能就100多一点k。一张彩色,很繁杂的jpg
可能200k,而单调的黑白色的,可能就100k以下。一张照片可以从500k压缩到100k,只是照片显示的细腻程度就完全不一样了。所以400k和像素没有直接关系。不够从相机的角度来说,一张400k的照片,在比较细腻的条件下,是可以达到1000万像素的。我的佳能相机基本就可以这个大小全像素成像。