`
葉小兔
  • 浏览: 30072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Convert png to gif

阅读更多

 

require "tempfile"
class Gif
  def self.convert_jpg_to_gif(arr)
    if arr.length == 1
      a = "#{Rails.root}/public/gif/1.jpeg"
      b = "#{Rails.root}/public/gif/2.jpeg"
      c = arr[0]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 2
      a = arr[0]
      b = "#{Rails.root}/public/gif/2.jpeg"
      c = arr[1]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 3
      a = arr[0]
      b = arr[1]
      c = arr[-1]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 4
      a = arr[0]
      b = arr[1]
      c = arr[-1]
      d = arr[2]
    end
    system("convert #{b} -background 'rgba(0,0,0,0.0)' -rotate \"-20\" #{Rails.root}/public/gif/22.gif")
    system("convert #{d} -background 'rgba(0,0,0,0.0)' -rotate \"-20\" #{Rails.root}/public/gif/41.gif")

    system("composite -gravity NorthEast -geometry 18x18+102+32  #{a} #{Rails.root}/public/gif/1231.gif #{Rails.root}/public/gif/a.gif ")
    system("composite -gravity SouthWest -geometry 22x22+15+48   #{Rails.root}/public/gif/22.gif #{Rails.root}/public/gif/a.gif #{Rails.root}/public/gif/a.gif")
    system("composite -gravity SouthEast -geometry 26x26+86+26   #{c} #{Rails.root}/public/gif/a.gif #{Rails.root}/public/gif/a.gif ")  #71X26
    system("composite -gravity SouthEast -geometry 16x16+24+81   #{Rails.root}/public/gif/41.gif #{Rails.root}/public/gif/a.gif  #{Rails.root}/public/gif/b1.gif ")

    system("convert #{b} -background 'rgba(0,0,0,0.0)' -rotate \"+20\" #{Rails.root}/public/gif/22.gif")

    system("composite -gravity NorthEast -geometry 18x18+102+32  #{a}  #{Rails.root}/public/gif/1232.gif  #{Rails.root}/public/gif/a1.gif ")
    system("composite -gravity SouthWest -geometry 22x22+19+49   #{Rails.root}/public/gif/22.gif #{Rails.root}/public/gif/a1.gif  #{Rails.root}/public/gif/a1.gif ")
    system("composite -gravity SouthWest -geometry 26x26+71+26   #{c} #{Rails.root}/public/gif/a1.gif  #{Rails.root}/public/gif/a1.gif ")  #71X26
    system("composite -gravity SouthEast -geometry 16x16+24+81   #{Rails.root}/public/gif/41.gif #{Rails.root}/public/gif/a1.gif  #{Rails.root}/public/gif/b2.gif ")

    system("convert -delay 100 -dispose Background #{Rails.root}/public/gif/b1.gif  #{Rails.root}/public/gif/b2.gif -loop 0 #{Rails.root}/public/gif/b3.gif")
    "#{Rails.root}/public/gif/b3.gif"
  end
end
require "tempfile"
class Gif
  def self.convert_jpg_to_gif(arr, work_image_path)
    if arr.length == 1
      a = "#{Rails.root}/public/gif/1.jpeg"
      b = "#{Rails.root}/public/gif/2.jpeg"
      c = arr[0]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 2
      a = arr[0]
      b = "#{Rails.root}/public/gif/2.jpeg"
      c = arr[1]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 3
      a = arr[0]
      b = arr[1]
      c = arr[-1]
      d = "#{Rails.root}/public/gif/4.jpeg"
    elsif arr.length == 4
      a = arr[0]
      b = arr[1]
      c = arr[-1]
      d = arr[2]
    end

    t11 = Tempfile.new(["t11",".png"], "#{Rails.root}/public/temp")   #temofile中:.png指定格式后可以生成背景透明的图片
    system("convert #{a} -background 'rgba(0,0,0,0.0)' -rotate \"6\" #{t11.path}")
    t21 = Tempfile.new(["t21",".png"], "#{Rails.root}/public/temp")
    system("convert #{b} -background 'rgba(0,0,0,0.0)' -rotate \"-18\" #{t21.path}")
    t31 = Tempfile.new(["t31",".png"], "#{Rails.root}/public/temp")
    system("convert #{c} -background 'rgba(0,0,0,0.0)' -rotate \"7\" #{t31.path}")
    t41 = Tempfile.new(["t41",".png"], "#{Rails.root}/public/temp")
    system("convert #{d} -background 'rgba(0,0,0,0.0)' -rotate \"11\" #{t41.path}")

    ta1 = Tempfile.new(["ta1",".png"], "#{Rails.root}/public/temp")
    tb1 = Tempfile.new(["tb1",".png"], "#{Rails.root}/public/temp")
    system("composite -gravity NorthEast -geometry 44x44+93+25   #{t11.path} #{Rails.root}/public/gif/b3.png #{ta1.path}")
    system("composite -gravity SouthWest -geometry 53x53+16+39   #{t21.path} #{ta1.path} #{ta1.path}")
    system("composite -gravity SouthEast -geometry 54x54+91+44   #{t31.path} #{ta1.path} #{ta1.path} ")
    system("composite -gravity SouthEast -geometry 44x44+25+92   #{t41.path} #{ta1.path}  #{tb1.path} ")

    system("convert #{a} -background 'rgba(0,0,0,0.0)' -rotate \"-14\" #{t11.path}")
    system("convert #{b} -background 'rgba(0,0,0,0.0)' -rotate \"+10\" #{t21.path}")
    system("convert #{c} -background 'rgba(0,0,0,0.0)' -rotate \"-11\" #{t31.path}")
    system("convert #{d} -background 'rgba(0,0,0,0.0)' -rotate \"-15\" #{t41.path}")

    ta2 = Tempfile.new(["ta2",".png"], "#{Rails.root}/public/temp")
    tb2 = Tempfile.new(["tb2",".png"], "#{Rails.root}/public/temp")
    system("composite -gravity NorthEast -geometry 48x48+93+22   #{t11.path} #{Rails.root}/public/gif/b2.png #{ta2.path}")
    system("composite -gravity SouthWest -geometry 48x48+22+38   #{t21.path} #{ta2.path} #{ta2.path}")
    system("composite -gravity SouthWest -geometry 55x55+125+41   #{t31.path} #{ta2.path} #{ta2.path} ")
    system("composite -gravity SouthEast -geometry 47x47+23+91   #{t41.path} #{ta2.path}  #{tb2.path} ")

    system("convert #{a} -background 'rgba(0,0,0,0.0)' -rotate \"+16\" #{t11.path}")
    system("convert #{b} -background 'rgba(0,0,0,0.0)' -rotate \"+3\" #{t21.path}")
    system("convert #{c} -background 'rgba(0,0,0,0.0)' -rotate \"-11\" #{t31.path}")
    system("convert #{d} -background 'rgba(0,0,0,0.0)' -rotate \"+11\" #{t41.path}")

    ta3 = Tempfile.new(["ta3",".png"], "#{Rails.root}/public/temp")
    tb3 = Tempfile.new(["tb3",".png"], "#{Rails.root}/public/temp")
    system("composite -gravity NorthEast -geometry 50x50+89+20   #{t11.path}  #{Rails.root}/public/gif/b1.png  #{ta3.path} ")
    system("composite -gravity SouthWest -geometry 44x44+24+40   #{t21.path} #{ta3.path}  #{ta3.path} ")
    system("composite -gravity SouthWest -geometry 55x55+98+41   #{t31.path} #{ta3.path}  #{ta3.path} ")
    system("composite -gravity SouthEast -geometry 45x45+20+91   #{t41.path} #{ta3.path}  #{tb3.path} ")

    path = work_image_path.gsub(/\d+\.jpg/, "#{Time.now.to_i}.gif")
    result = File.new(path, 'w')
    tb4 = Tempfile.new(["tb4",".gif"], "#{Rails.root}/public/temp") #此处必须声明.gif后缀负责converet将会报错,命令不是别temp文件
    system("convert -delay 100 -dispose Background #{tb1.path} #{tb2.path}  #{tb3.path} -loop 0 #{tb4.path}")
    system("convert -dispose none -delay 0 #{work_image_path} -dispose previous -delay 100 #{tb4.path} -loop 0 #{path}")
    [t11,t21,t31,t41, ta1, tb1, ta2, ta3,tb2,tb3, tb4].each do |tempfile|
      tempfile.delete
    end
    path
  end
end
* 不加.png 和.gif在服务器上运行没有错误,也生成了想要的图片,为什么clone下来后就不行了呢?和tempfile类相关还是和converet中gif这个带帧的格式相关呢?
 
分享到:
评论

相关推荐

    Easy2Convert PNG to IMAGE 图片格式转换工具 v2.6官方版

    为您提供Easy2Convert PNG to IMAGE 图片格式转换工具下载,Easy2Convert PNG to IMAGE官方版是一款相当出众的图片格式转换器,可以将便携式网络图形文件(.png)轻松快速地转换为多种图像文件格式,有需要的用户可以...

    在java 1.4环境下把图片从png转换为gif格式

    在Java 1.4环境下,将PNG图片转换为GIF格式是一项挑战,...`Convert4.java`和`PNG2GIF.jar`是完成这个任务的关键组件,它们封装了这个转换过程的细节。如果你正在处理这样的项目,仔细研究这些文件的源码会非常有帮助。

    JPG、PNG、GIF等图像格式转换为SVG矢量图的C代码

    Convert jpeg png or gif to SVG greyscale images ImageToSVG vectorises greyscale images. It does a reasonable job on continuous tone images though a real good solution is hard. It takes the number of ...

    使png透明得一个gif图片

    本文将深入探讨如何将PNG图像转换为具有透明效果的GIF图片,并解释这一过程中的相关技术知识。 首先,我们需要理解PNG和GIF这两种图像格式的特点。PNG(Portable Network Graphics)是一种无损压缩的图像格式,它...

    Convert Image to PDF

    1. 图像格式:图像可以有多种格式,如JPEG、PNG、BMP、GIF等。这些格式各有优缺点,例如JPEG适合存储照片,PNG则适合透明背景和高质量图形。转换至PDF时,图像的质量和大小都会被考虑。 2. PDF(Portable Document ...

    webp2jpg-online:Use the browser's online image format converter, no need to upload files, you can convert jpeg, jpg, png, gif, webp, svg, ico, bmp files to jpeg, png, webp animation, gif, base64,avif,mozjpeg. 使用浏览器的在线图片格式转化器,无需上传文件,可将jpeg、jpg、png、gif、webp

    在线图片格式转化器, 可将jpeg、jpg、png、gif、webp、svg、ico、bmp文件转化为jpeg、png、webp、webp动画、gif文件。无需上传文件,本地即可完成转换 主要功能 ✓ 无需上传,使用浏览器自身进行转换 ✓ 批量转换...

    MATLAB 动画生成gif图片

    system(['convert -delay 10 -loop 0 frame*.png AnimatedGif.gif']); % 使用ImageMagick的convert工具 ``` 这里,`-delay 10`表示每帧之间的时间间隔,单位是毫秒,`-loop 0`表示无限循环播放,`frame*.png`是...

    Logi-gif:它在 Logisim 中加载和显示 gif。 使用 Logisim 和 Python,以及 OpenCV 和 Convert 库

    Logi-gif Logi-gif 在 Logisim 中加载和显示 gif。 使用 Logisim 和 Python,以及 OpenCV 和 ImageMagick 库(在 Mac OS ... [gif-name]_resized.gif convert [gif-name]_resized.gif [gif-name]_resized_%d.png 运行py

    Convert image to any format-crx插件

    将您的图像转换成任何格式(JPG转换为PNG,GIF转换为PNG,BMP转换为PNG,PNG转换为JPG,GIF转换为JPG,BMP转换为JPG,JPG转换为GIF,PNG转换为GIF,BMP转换为GIF,JPG转换为BMP,PNG转换为BMP ,GIF到BMP)。...

    C#批量转换图片格式,BMP/JPG/PNG/GIF转换

    BMP/JPG/PNG/GIF,为了使大批量的图像格式转换变的简单,因此开发出批量图像格式转换工具,图像格式转换主要通过Bitmap类的Save方法实现,将Image以指定的格式保存到指定文件,下面代码主要是创建了一个用于进行图像...

    右键转换调整图片(SendTo-Convert)v27.3.0英文免费安装版(3264bit)

    SendTo-Convert 是一个图片格式转换软件,在操作方面比较特别,...出现快捷处理菜单,将图片转换为jpeg,gif,bmp,png等图形格式安装 SendTo-Convert 后我们建议先打开主窗口对软件进行一下设置先,譬如默认转换后的图

    GIF图像制作+教程,gif动态图片制作

    GIF格式最初于1987年推出,支持256种颜色的调色板,这使得它在色彩丰富的图像上可能不如其他格式如JPEG或PNG,但它的优势在于能存储多帧动画,形成循环播放的动态效果。这种格式的文件通常较小,适合在网络上传输和...

    swf视频转换器(支持很多格式)

    Convert flash(swf) to PNG (.png) with alpha channel Website: http://www.effectmatrix.com/ Forum: http://www.effectmatrix.com/forum/ Email: swordm@gmail.com 64 06 01 84 04 21 Copyright 2004-...

    PearMountain 批量图像处理

    PearlMountain JPG to PDF Converter can directly used for batch convert a large number of image formats such as JPG, GIF, PNG, BMP, TIFF and so on, into PDF file. You can easily combine multiple JPG ...

    抓取 GIF 工具

    常见的GIF处理工具包括GIMP、Adobe Photoshop、Online-convert.com等,它们提供了丰富的功能来处理GIF。此外,还有一些专门的在线服务,如Giphy、ezGIF等,可以方便快捷地进行GIF的编辑和转换。 5. **应用实例** ...

    批量图片转换ConvertTool

    它支持多种常见的图片格式,如JPEG、PNG、BMP、GIF等,可以轻松实现不同格式之间的相互转换。对于需要处理大量图片的设计师、摄影师或者普通用户来说,这无疑是一个非常便利的工具。 二、核心功能与特性 1. **批量...

    Gif动态图片制作工具

    由于其压缩算法和有限的颜色调色板,GIF文件通常比其他格式(如JPEG或PNG)更小,更适合在网络上传输。 2. **Gif动态图片制作工具** 制作Gif动态图片的工具有很多种,包括在线工具和桌面应用程序。一些流行的选择...

    makegif.zip_从视频中提取桢_制作gif

    convert -delay 50 -loop 0 frame*.png animated.gif ``` 这里的`-delay 50`定义了每帧之间的延迟时间(单位是毫秒),`-loop 0`表示无限循环播放,`frame*.png`是你要合并的帧图片,最后的`animated.gif`是输出的...

    imagemagick使用指南.docx

    ImageMagick 使用指南 ImageMagick 是一款功能强大且多功能的图像处理工具,...convert -monochrome foo.png bar.png 这些是 ImageMagick 的一些基本功能和使用方法,更多的功能和参数可以查看 ImageMagick 的文档。

Global site tag (gtag.js) - Google Analytics