我正在使用actionscript的getPixel和php的imagecreatetruecolor和imagesetpixel的组合来在浏览器中生成swf电影的png图像。
目前它将以与swf电影相同的分辨率输出72 dpi图像,但我被问及是否有可能生成300 dpi图像。
这可能吗?
答案 0 :(得分:4)
Flash对分辨率或dpi一无所知。从具有正确像素数和打印质量的闪光输出图像的唯一方法是将电影缩放到该像素数量并使用打印质量图像或矢量图形。否则你只需要一个编程缩放的图像,这并不比仅仅将72dpi图像发送到打印更好。长话短说,flash不是一个好的打印设计平台。
答案 1 :(得分:1)
我假设您使用BitmapData.draw
生成图片?如果您在将图片转储到scaleX
之前向上缩放swf(scaleY
和BitmapData
),则可以获得更高的采样率=更高的DPI。
如果您不想要更多数据,只需插值(如McWafflestix建议),您可以尝试使用比例Matrix
作为draw
的第二个参数。
答案 2 :(得分:0)
是的,它应该是可能的。您可以缩小输出图像的大小(从而增加DPI),也可以使用插值将有效分辨率从72 DPI提高到300 DPI。
答案 3 :(得分: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
}