Image 图像函数如可支持动态的gif动画图片

liyuqa 2008-09-17 01:32:22
<?php
$im = imagecreatefromgif("未命名.gif");
$text = '中国我爱你';
// Replace path by your own font path
$font = '经典空叠黑.TTF';
$text=iconv("gb2312","UTF-8",$text);//
// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, 0, $font, $text);
imagegif($im);
imagedestroy($im);
?>
未命名.gif 是个动态图片 但输出成了静态图片了,怎么处理.
...全文
210 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuqa 2008-09-17
  • 打赏
  • 举报
回复
flash的当然不行
sdomain 2008-09-17
  • 打赏
  • 举报
回复
找到一个可以生成FLASH的,也能动的,不知道可合你意,呵呵:
http://www.phperunion.cn/viewthread.php?tid=21&extra=page%3D1
不过需要注册一下,能看到生成FLASH的源代码.我试了下,可以的,
程序猿之殇 2008-09-17
  • 打赏
  • 举报
回复
gifimage 支持生成动画gif.
cheryc666 2008-09-17
  • 打赏
  • 举报
回复
帮顶,能不能做到把一个gif比如蝴蝶给弄到自己照片上合成出来个gif的哪?
程序猿之殇 2008-09-17
  • 打赏
  • 举报
回复
找了找,只找到生成gif的,没有找到能够读取gif图片的.
gifimage.class.php google一下吧.
程序猿之殇 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liyuqa 的回复:]
我见过人用php来生成gif动态图片,不过我技术有限,想高手指点一下
[/Quote]

你有看他的源码吗?

我记得我原来做项目的时候,也是调用第三方的软件的.只不过他是用php包装了一下.
具体思路:
php文件里用命令行调用第三方的软件.
在需要生成动态gif的地方,用php.exe 执行这个php文件,当然要提供一些必要的参数.
xiaolei1982 2008-09-17
  • 打赏
  • 举报
回复
除非谁有现成的或者官方发不过,如果自己来写或许可能,但是很困难
给你查了一个也是
http://www.imagemagick.com.cn/php/magickwand_demo.php
看看吧,没研究过不过
jiayhl 2008-09-17
  • 打赏
  • 举报
回复
我也很想实现啊!高手都哪里去了???
liyuqa 2008-09-17
  • 打赏
  • 举报
回复
我见过人用php来生成gif动态图片,不过我技术有限,想高手指点一下
程序猿之殇 2008-09-17
  • 打赏
  • 举报
回复
很久没有动过gd函数了.
目前应该是不能处理动态的gif图片.

你可以利用第三方软件来生成. 比如说imagemagick
使用GDI+库显示gif动态图片,该类接口如下: 可以看出,该ImageEx完全继承了基类的接口函数。 说明: 如果打开非多帧图片,该类几乎完全等价于基类,比如你可以把该类的对象代入Graphics类系列的成员函数中; 如果打开的是多帧的图片,你只要打开图片后不调用InitAnimation函数(它会创建线程),则上述做法依然可以; 但如果调用InitAnimation函数后(单帧图像没关系,因为不会创建线程),则不可以了, 所有的基类继承过来的接口成员函数和配合gdi+库其他类的函数调用都是不可以的,因为没有作线程同步, 你只能调用下面位数不多的几个public成员函数,调用Destroy成员函数后,则就可以了,因为它会关闭线程。 其实你会发现下面的public成员函数操作的成员变量都是新增的成员变量,没涉及到线程同步问题。 class ImageEx : public Image { public: //以长度为nSize的内存pBuff中的内容构造图像 ImageEx(const void* pBuff, size_t nSize, BOOL useEmbeddedColorManagement = FALSE); //以类型为sResourceType,名称为sResource的资源构造图像 ImageEx(LPCTSTR sResourceType, LPCTSTR sResource, BOOL useEmbeddedColorManagement = FALSE); //以文件构造图像 ImageEx(LPCTSTR filename, BOOL useEmbeddedColorManagement = FALSE); //调用Destroy成员函数 ~ImageEx(); public: //如果已经构造的对象是动画,则创建动画线程,并返回true, //如果为静态图像或已经创建过动画线程,则也返回false // 图像将绘制在m_hWnd客户区的rect区域,会拉伸,支持镜像 bool InitAnimation(HWND hWnd, RECT rect); //判断是否为动画 bool IsAnimatedGIF() { return m_nFrameCount > 1; } //设置动画暂停与否 void SetPause(bool bPause); //判断动画是否处于暂停状态 bool IsPaused() { return m_bPause; } //关闭动画,事实上基类Image中还有的两个成员变量没有关闭,因为析构函数会调用基类析构函数进行关闭的 void Destroy(); //另外的非public的东西省略.. }; 用法: MFC对话框程序在下面添加: BOOL CTestDlgDlg::OnInitDialog() { CDialog::OnInitDialog(); //其它的初始化代码 // GDI+ //m_imageImageEx指针类型成员变量,"GIF"为资源类型,"HEARTS"为资源名称 m_image = new ImageEx( _T("GIF"), _T("HEARTS") ); RECT rc; GetClientRect(&rc); m_image->InitAnimation(this->m_hWnd, rc);//创建gif播放线程 return TRUE; // return TRUE unless you set the focus to a control } CTestDlgDlg::~CTestDlgDlg() { // GDI+ delete m_image; } 其中的m_image = new ImageEx( _T("GIF"), _T("HEARTS") );你可以换成ImageEx类的另外两个构造函数
Java在窗口上加载显示GIF动画图像,将多个独立的GIF图像串联在一起显示,形成GIF特有的动画形式。主要代码如下:   ImageIcon[] images; //用于动画的图标数组   Timer animationTimer;   int currentImage = 0; //当前图像编号   int delay = 500; //图像切换延迟   int width; //图像宽度   int height; //图像高度   public AnimatorIcon() //构造函数   {    setBackground(Color.white);    images = new ImageIcon[2]; //初始化数组    for (int i=0;i   images[i]=new ImageIcon(getClass().getResource("image" i ".gif")); //实例化图标    width = images[0].getIconWidth(); //初始化宽度值    height = images[0].getIconHeight(); //初始化高度值   }   public void paintComponent(Graphics g) { //重载组件绘制方法    super.paintComponent(g); //调用父类函数    images[currentImage].paintIcon(this,g,70,0); //绘制图标    currentImage=(currentImage 1)%2; //更改当前图像编号   }   public void actionPerformed(ActionEvent actionEvent) {    repaint();   }   public void startAnimation() { //开始动画    if (animationTimer==null) {    currentImage=0;    animationTimer=new Timer(delay, this); //实例化Timer对象    animationTimer.start(); //开始运行    } else if (!animationTimer.isRunning()) //如果没有运行    animationTimer.restart(); //重新运行   }   public void stopAnimation() {    animationTimer.stop(); //停止动画   }   public static void main(String args[]) {    AnimatorIcon animation = new AnimatorIcon(); //实例化动画图标    JFrame frame = new JFrame("动画图标"); //实例化窗口对象    frame.getContentPane().add(animation); //增加组件到窗口上    frame.setSize(200, 100); //设置窗口尺寸    frame.setVisible(true); //设置窗口可视    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序    animation.startAnimation(); //开始动画

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧