Ben dinamik flash dosyadan 300 dpi görüntü oluşturabilir miyim?

4 Cevap php

Ben bir tarayıcıda bir swf film bir png görüntü oluşturmak için ActionScript adlı getPixel ve php en imagecreatetruecolor ve imagesetpixel bir compination kullanıyorum.

Şu anda bu çıkış swf film olarak aynı çözünürlükte 72 dpi görüntü olacak, ama bunun yerine bir 300 dpi görüntü üretme olasılığı hakkında sorular oldum.

Bu mümkün mü?

4 Cevap

Flaş gerçekten çözünürlük veya dpi hakkında hiçbir şey bilmiyor. Piksel doğru miktarda ve baskı kalitesi flaş çıkışı bir görüntü için tek yol piksel bu miktarın film ölçek ve baskı kalitesi görüntüleri veya vektör grafik kullanmaktır. Aksi takdirde sadece sadece baskı kapalı 72dpi görüntü gönderirken daha iyi bir programlama ölçekli bir görüntü için gidiyoruz. Uzun lafın kısası, flaş iyi bir baskı tasarım platformu değildir.

Ben görüntü oluşturmak için BitmapData.draw kullanmak varsayıyorum? Eğer swf büyütmek if (scaleX ve scaleY), bir BitmapData, daha yüksek bir örnekleme oranı elde edebilirsiniz = daha yüksek bir DPI görüntü damping önce.

Eğer daha fazla veri, sadece enterpolasyon (McWafflestix anlaşılacağı gibi) istemiyorsanız, size draw için ikinci parametre olarak bir ölçek Matrix kullanarak deneyebilirsiniz.

Evet, bu mümkün olmalıdır. Sen çıktı görüntüsünün boyutunu (böylece DPI artan) azaltmak veya 300 DPI 72 DPI çözünürlük etkin artırmak için enterpolasyon kullanabilir ya.

evet yapabilirsiniz, ben flashplayer 9 hakkında emin değil, ama orada çalışır düşünüyorum

İşte benim çözüm, belki kötü, ya da aptal codding, ama çalışır

all you need is to play with each item that you need to make at 300 dpi some kind of

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
}