পিক্সেলকে পয়েন্টে রূপান্তর করুন


125

আমার পিক্সেলগুলিকে সি # তে পয়েন্টে রূপান্তর করতে হবে। আমি বিষয়টি সম্পর্কে কিছু জটিল ব্যাখ্যা দেখেছি, তবে একটি সাধারণ সূত্রটি সনাক্ত করতে পারে বলে মনে হচ্ছে না। আসুন একটি আদর্শ 96 ডিপিআই অনুমান করি, আমি কীভাবে এই রূপান্তরকে গণনা করব?

উত্তর:


198

আছে প্রতি ইঞ্চি 72 পয়েন্ট ; যদি প্রতি ইঞ্চিতে 96 পিক্সেল ধরে নেওয়া যথেষ্ট হয় তবে সূত্রটি বরং সহজ:

পয়েন্টস = পিক্সেল * 72/96

উইন্ডোজ ব্যবহার করে আপনার প্রতি ইঞ্চি প্রতি কনফিগার পিক্সেল পাওয়ার উপায় রয়েছে GetDeviceCaps। মাইক্রোসফ্টের একটি গাইড রয়েছে "বিকাশকারী ডিপিআই-অ্যাওয়ার অ্যাপ্লিকেশনস" , "ডিপিআই-অ্যাওয়ার ফন্ট তৈরি করা" বিভাগটি দেখুন।

ডাব্লু 3 সি পিক্সেল পরিমাপটিকে pxঠিক হিসাবে সংজ্ঞায়িত করেছেডাব্লু 3 সি আপনার ডিসপ্লের প্রকৃত রেজোলিউশন নির্বিশেষে 1 ম 1/96 তম , সুতরাং উপরের সূত্রটি সমস্ত ওয়েব কাজের জন্য ভাল হওয়া উচিত।


26
Inch২ পয়েন্ট প্রতি ইঞ্চি কোনও তর্কযোগ্য আইটেম নয়, বোর্ড জুড়ে এটি একই রকম!
মিচেল বিক্রেতারা

11
@ ডেভিড ডিপিআই প্রদর্শনীর উপর নির্ভরশীল, পিপিআই একটি টাইপোগ্রাফিক ধ্রুবক
কোরি রস

3
@ ডেভিড এই নিবন্ধটি কেবল মনিটরে কেন ভেরিয়েবল ডিপিআই রয়েছে তা ব্যাখ্যা করে। পিপিআই এখনও একই রকম। আপনি যে গাড়ী চালান তার উপর নির্ভর করে এক মাইল কিলোমিটারের সংখ্যা পরিবর্তন হয় না। ধরে নেওয়া 96 ডিপিআই সাধারণত ভাল ধারণা নয়, তবে আমরা যদি তা করি তবে প্রদত্ত সূত্রটি সঠিক।
কোয়ান্টিন

13
সাধারণত পিপিআই হ'ল পিক্সেল প্রতি ইঞ্চিটির সংক্ষেপণ, প্রতি ইঞ্চি পয়েন্ট নয়। সম্ভবত বিভ্রান্তি কোথা থেকে আসে? প্রতি ইঞ্চি পয়েন্ট সর্বদা 72; লিটি জেটিয়াসের জন্য ধন্যবাদ।
মার্ক রান্সম

@ কোরি রস: আসলে, ডিপিআই প্রিন্টারের উপর নির্ভরশীল হবে, আর পিপিআই মনিটরের দুল হবে। তবে প্রত্যেকে ভুলভাবে পিপিআই ডিপিআই কল করে ...
স্টিফান স্টিগার

58

যদি আপনার কোড কোনও ফর্মের মধ্যে থাকে তবে এটি ব্যবহার করে দেখুন:

Graphics g = this.CreateGraphics();
points = pixels * 72 / g.DpiX;
g.Dispose();

2
DpiX প্রস্থের জন্য যেখানে DpiY উচ্চতার জন্য ব্যবহার করা উচিত তা কি উল্লেখযোগ্য?
পান্ডাওয়ুড

25

ধরে নেওয়া 96 ডিপিআই একটি বিশাল ভুল। এমনকি যদি অনুমানটি সঠিক হয় তবে ফন্টগুলি স্কেল করার একটি বিকল্পও রয়েছে। সুতরাং 10 পিটিএসের জন্য সেট করা একটি ফন্টটি আসলে এটি 12.5pt (125%) হিসাবে প্রদর্শিত হতে পারে।


23

প্রদত্ত দিয়ে শুরু:

  • একটি ইঞ্চিতে 72 পয়েন্ট রয়েছে (এটি একটি পয়েন্ট যা হয়, 1 ইঞ্চির 1/72)
  • 150 ডিপিআই-র জন্য সেট করা একটি সিস্টেমে প্রতি ইঞ্চিতে 150 পিক্সেল রয়েছে।
  • 1 ইন = 72pt = 150px (150 ডিপিআই সেটিংয়ের জন্য)

আপনি যদি পিক্সেল (px) এর উপর ভিত্তি করে পয়েন্টগুলি (পিটি) সন্ধান করতে চান:

 72 pt    x pt
------ = -----                  (1) for 150dpi system
150 px    y px

পুনরায় সজ্জিত করা:

x = (y/150) * 72                (2) for 150dpi system

তাই:

points = (pixels / 150) * 72    (3) for 150dpi system

1
প্রথম সমীকরণের ডিপিআই হওয়া উচিত পিএক্স - শর্তাবলী বাতিল করার জন্য, যেহেতু আমাদের 150 ডিপিআই সিস্টেমের জন্য অনুমান (1) রয়েছে
জেসন এস

9

ডাব্লুপিএফ System.Windows.FontSizeConverter দিয়ে পিক্সেলগুলিতে পয়েন্টগুলিতে রূপান্তর করে। FontSizeConverter System.Windows.LengthConverter ব্যবহার করে। দৈর্ঘ্য কনভার্টারটি পয়েন্ট (পি) থেকে পিক্সেল (এক্স) এ রূপান্তর করতে 1.33333333333333333333 ফ্যাক্টরটি ব্যবহার করে: x = পি * 1.3333333333333333


দয়া করে এই মানটি কেন ব্যবহৃত হয় তাও ব্যাখ্যা করুন ... কাকতালীয়ভাবে এটি 96 ডিপিআই (ডিসপ্লেগুলির জন্য উইন্ডোগুলির ডিফল্ট ডিপিআই) / 72 ডিপিআই (ডিপিআই যা পয়েন্টগুলি সংজ্ঞায়িত করা হয়)।
কিট আছে - অ্যানি-মৌসে

5

সিস্টেম.ড্রেইং.গ্রাফিক্সে ডিপিএক্স এবং ডিপিআইওয়াই বৈশিষ্ট্য রয়েছে। অনুভূমিকভাবে ডিপিআইএক্স পিক্সেল প্রতি ইঞ্চি। ডিপিআইওয়াই প্রতি ইঞ্চি উল্লম্বভাবে পিক্সেল। পয়েন্টগুলি (প্রতি ইঞ্চিতে 72 পয়েন্ট) থেকে পিক্সেলগুলিতে রূপান্তর করতে এগুলি ব্যবহার করুন।

উদা: 14 অনুভূমিক পয়েন্ট = (14 * ডিপিআইএক্স) / 72 পিক্সেল


4

অবশ্যই এই পুরো প্রশ্নটি হওয়া উচিত:

"আমি কীভাবে মনিটরের অনুভূমিক এবং উল্লম্ব পিপিআই (পিক্সেল প্রতি ইঞ্চি) পেতে পারি?"

একটি ইঞ্চিতে 72২ পয়েন্ট রয়েছে (সংজ্ঞা অনুসারে, একটি "পয়েন্ট" একটি ইঞ্চির 1 / 72nd হিসাবে সংজ্ঞায়িত হয়, একইভাবে একটি "পিকা" একটি ফুট এর 1 / 72nd হিসাবে সংজ্ঞায়িত হয়)। এই দুটি বিটের তথ্যের সাহায্যে আপনি খুব সহজেই পিএক্স থেকে পিটি এবং পিছনে রূপান্তর করতে পারেন।


এটিকে আরও জটিল করে তোলার জন্য, আমি একটি রিপোর্টিং সার্ভিসেস (আরডিএল) রিপোর্টে জিনিসগুলি প্রান্তিককরণের সাথে কাজ করছি যা একটি পিডিএফে রূপান্তরিত হচ্ছে। দিন শেষে, কে হেক জানে যে ডিপিআই কি? আমি আমার সেরা অনুমান ব্যবহার করছি। :)
টড ডেভিস

আপনার অর্থ "আমি কীভাবে মনিটরের অনুভূমিক এবং উল্লম্ব DPI পেতে পারি?" পিপিআই 72 এর একটি ধ্রুবক Always সর্বদা ছিল এবং সর্বদা থাকবে।
এক্সটিয়াস

1
প্রতি ইঞ্চায় পিক্সেল, প্রতি ইঞ্চি পয়েন্ট নয় (পিকা)।
জিবিবি

1
উম, উফ, পিকা নয়! এটি একটি ইঞ্চির 1/6 তম। প্রতি ইঞ্চি পয়েন্টগুলি অনর্থক, শব্দটি "পয়েন্টস"। একটি "পয়েন্ট" ইঞ্চির 1/72 তম।
জিবিবি

4

আসলে এটি হতে হবে

points = pixels * 96 / 72

1
আপনি যদি 96 ডিপিআই এবং 72 পিপি (পয়েন্ট প্রতি ইঞ্চি) ধরে থাকেন তবে এটি ভুল। এটি পয়েন্ট হবে = পিক্সেল *
জেসন এস

4

পয়েন্ট = (পিক্সেল / 96) * 72 একটি স্ট্যান্ডার্ড এক্সপি / ভিস্তা / 7 মেশিনে (কারখানার ডিফল্ট)

পয়েন্ট = (পিক্সেল / 72) * 72 একটি স্ট্যান্ডার্ড ম্যাক চলমান ওএসএক্সে (কারখানার ডিফল্ট)

উইন্ডোজ 96 ডিপিআই (প্রদর্শন) এ ডিফল্ট হিসাবে চালিত ম্যাকগুলি 72 ডিপিআই (প্রদর্শন) এ ডিফল্ট হিসাবে চালিত

P২ পোস্টস্ক্রিপ্ট পয়েন্ট = ১ ইঞ্চি 12 পোষ্টস্ক্রিপ্ট পয়েন্ট = 1 পোস্টস্ক্রিপ্ট পিকা 6 পোস্টস্ক্রিপ্ট পিকাস = 72 পয়েন্ট = 1 ইঞ্চি

1 পয়েন্ট = 1⁄72 ইঞ্চি = 25.4⁄72 মিমি = 0.3527 মিমি

ডিপিআই = প্রতি ইঞ্চায় ডটস পিপিআই = পিক্সেল প্রতি ইঞ্চি এলপিআই = প্রতি ইঞ্চিতে লাইন

পরিমাপ হিসাবে Em ব্যবহার করে আরও তথ্য

16px = 1 মিম (সাধারণ পাঠ্যের জন্য ডিফল্ট) 8 এম = 16 পিক্স * 8 পিক্সেল / 16 = এম



0

সঠিকভাবে DPI পেতে ম্যাকের উপর wxPython ব্যবহার করুন:

    from wx import ScreenDC
    from wx import Size

    size: Size = ScreenDC().GetPPI()
    print(f'x-DPI: {size.GetWidth()} y-DPI: {size.GetHeight()}')

এই ফলন:

x-DPI: 72 y-DPI: 72

সুতরাং, সূত্রটি হ'ল:

পয়েন্টস: int = (পিক্সেল নাম্বার * 72) // 72


-1

উচ্চতা রেখাগুলি পয়েন্ট এবং পিক্সেলে রূপান্তরিত হয় (আমার নিজস্ব সূত্র)। এখানে সারি উচ্চতা ক্ষেত্রে 213.67 পয়েন্টের ম্যানুয়াল প্রবেশের একটি উদাহরণ রয়েছে:

213.67  Manual Entry    
  0.45  Add 0.45    
214.12  Subtotal    
213.75  Round to a multiple of 0.75 
213.00  Subtract 0.75 provides manual entry converted by Excel  
284.00  Divide by 0.75 gives the number of pixels of height

213.67 পয়েন্টের ম্যানুয়াল এন্ট্রি 284 পিক্সেল দেয়।
213.68 পয়েন্টের ম্যানুয়াল এন্ট্রি 285 পিক্সেল দেয়।

(কেন 0.45? আমি জানি না তবে এটি কাজ করে))

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.