Php 我可以从flash文件动态生成300 dpi的图像吗?

Php 我可以从flash文件动态生成300 dpi的图像吗?,php,flash,actionscript,image-processing,dpi,Php,Flash,Actionscript,Image Processing,Dpi,我使用actionscript的getPixel、php的ImageCreateTureColor和imagesetpixel的组合在浏览器中生成swf电影的png图像 目前,它将以与swf电影相同的分辨率输出一幅72 dpi的图像,但有人问我是否有可能生成一幅300 dpi的图像 这可能吗?是的,应该可能。您可以减小输出图像的大小(从而增加DPI),也可以使用插值将有效分辨率从72 DPI提高到300 DPI。我假设您使用位图数据。绘制生成图像?如果在将图像转储到位图数据之前放大swf(sca

我使用actionscript的getPixel、php的ImageCreateTureColor和imagesetpixel的组合在浏览器中生成swf电影的png图像

目前,它将以与swf电影相同的分辨率输出一幅72 dpi的图像,但有人问我是否有可能生成一幅300 dpi的图像


这可能吗?

是的,应该可能。您可以减小输出图像的大小(从而增加DPI),也可以使用插值将有效分辨率从72 DPI提高到300 DPI。

我假设您使用
位图数据。绘制
生成图像?如果在将图像转储到
位图数据
之前放大swf(
scaleX
scaleY
),可以获得更高的采样率=更高的DPI


如果您不需要更多数据,只需插值(如McWafflestix所建议的),您可以尝试使用scale
矩阵
作为绘制的第二个参数

Flash实际上对分辨率或dpi一无所知。要以正确的像素量和打印质量从flash输出图像,唯一的方法是将电影缩放到该像素量,并使用打印质量的图像或矢量图形。否则,你只会有一个按程序缩放的图像,这并不比只发送72dpi的图像打印好多少。长话短说,flash不是一个好的打印设计平台。

是的,你可以,我不确定flashplayer 9,但我认为它在那里工作

这是我的解决方案,可能是坏的,或愚蠢的编码,但它的工作

所有你需要的是发挥每一个项目,你需要在300 dpi 某种

for(...)
{
  var item:* = items[i]
  item.x = item.x * delta_dpi
  item.y = item.y * delta_dpi
  item.width = item.width * delta_dpi
  item.height = item.height * delta_dpi

  if(item is TextArea)
     // here you must increase sizes for text
     [your_text_size] = [your_text_size] * delta_dpi
     // and you need to apply new size to your area

----------
   // in my case i used this function
   if(item is TextArea)
       item.htmlText = remakeText(item.htmlText)

}

function remakeText():String
{
  var arr:Array = str.split('SIZE="')               
  var str:String
  var i:int;

  for(i=1; i < arr.length; i++)
  {
     str = arr[i]
     var idx:int = str.indexOf('"')
     var str2:String = str.substr(0, idx)
     var nr:Number 
     if(to300)
    nr = Number(str2) * 3.125
     else
    nr = Number(str2) / 3.125
     str = 'SIZE="' + nr + str.substring(idx)
     arr[i] = str
   }

   str = ''
   for(i=0; i < arr.length; i++)
      str += arr[i]

   return str
}
(…)的

{
可变项目:*=项目[i]
item.x=item.x*delta_dpi
item.y=item.y*增量dpi
item.width=item.width*增量dpi
item.height=item.height*delta_dpi
如果(项目为文本区域)
//在这里,您必须增加文本的大小
[您的文本大小]=[您的文本大小]*增量dpi
//您需要在您的区域应用新尺寸
----------
//在我的例子中,我使用了这个函数
如果(项目为文本区域)
item.htmlText=remakeText(item.htmlText)
}
函数remakeText():字符串
{
var arr:Array=str.split('SIZE=“”)
var-str:String
变量i:int;
对于(i=1;i