2

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

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

这可能吗?

4

4 回答 4

4

Flash 并不真正了解分辨率或 dpi。从闪存输出具有正确像素数量和打印质量的图像的唯一方法是将您的电影缩放到该像素数量并使用打印质量图像或矢量图形。否则,您将获得一个以编程方式缩放的图像,这并不比仅发送 72dpi 图像进行打印更好。长话短说,flash 不是一个好的印刷设计平台。

于 2009-07-14T23:22:16.130 回答
1

我假设你BitmapData.draw用来生成图像?如果在将图像转储到 a 之前将 swf 放大 (scaleX和) ,则可以获得更高的采样率 = 更高的 DPI。scaleYBitmapData

如果您不想要更多数据,只需要插值(如 McWafflestix 建议的那样),您可以尝试使用比例Matrix作为draw.

于 2009-07-14T23:16:23.210 回答
0

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

于 2009-07-14T23:12:51.143 回答
0

是的,你可以,我不确定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
}
于 2010-02-04T01:48:13.260 回答