Php 我可以从flash文件动态生成300 dpi的图像吗?
我使用actionscript的getPixel、php的ImageCreateTureColor和imagesetpixel的组合在浏览器中生成swf电影的png图像 目前,它将以与swf电影相同的分辨率输出一幅72 dpi的图像,但有人问我是否有可能生成一幅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
这可能吗?是的,应该可能。您可以减小输出图像的大小(从而增加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