আমি কীভাবে স্ক্রিনে মাত্রা পরিমাপ করব?


29

আমার স্ক্রিনে একটি চিত্র রয়েছে এবং আমি এর প্রস্থ পরিমাপ করতে চাই। অবশ্যই আমি কোনও শাসক ব্যবহার করতে পারি , তবে এটি তীক্ষ্ণ এবং ধীর। এখানে কি এমন কিছু আছে যেখানে আমি একটি শর্টকাট কীটি ক্লিক করতে পারি, কোনও অঞ্চল টেনে আনতে পারি এবং এটি আমাকে সেই অঞ্চলের উচ্চতা এবং প্রস্থকে বলবে?

গুগল ক্রোমের জন্য পৃষ্ঠা রুলারের অনুরূপ কিছু ।

বর্তমানে, আমি Shift+ ব্যবহার PrtScnকরে অঞ্চলটি টানছি, চিত্রটি সংরক্ষণ করুন এবং তার উচ্চতা এবং প্রস্থটি অনুসন্ধান করতে প্রোপার্টিগুলিতে যাচ্ছি।

উত্তর:


10

শাটার ব্যবহার করে

আপনার যদি ইনস্টল না থাকে তবে প্রথমে শাটারটি ইনস্টল করুন।

sudo apt-get install shutter

সম্পাদনা -> পছন্দসমূহের অধীনে পছন্দগুলি খুলুন এবং আচরণ ট্যাবটি নির্বাচন করুন।
'লগইন এ স্টার্ট শাটার' এবং 'প্রথম লঞ্চে উইন্ডোটি লুকান' পরীক্ষা করুন। স্ক্রিনশট নীচে দেখুন:

এখানে চিত্র বর্ণনা লিখুন

ব্যবহার

  1. শাটার প্যানেল আইকনটি দৃশ্যমান কিনা তা নিশ্চিত করুন এবং আপনার উইন্ডো বা যা আপনি পরিমাপ করতে চান তা নির্বাচন করুন।
  2. শাটার আইকনে ক্লিক করুন এবং 'নির্বাচন' নির্বাচন করুন।

এখানে চিত্র বর্ণনা লিখুন

  1. আপনার প্রারম্ভিক বিন্দুটি নির্বাচন করুন এবং আপনার শেষ বিন্দুতে টানুন। আপনার নির্বাচন বাদে পুরো উইন্ডোটি অন্ধকার হয়ে যাবে। আরও 'পয়েন্টে' ফলাফল পেতে আপনি সীমানাগুলিকে চারপাশে সরিয়ে নিতে পারেন।
  2. শাটারটি এক্স এবং ওয়াই সমন্বয় এবং নির্বাচনের আকার (যা আপনি চান) সহ একটি ডায়ালগ উইন্ডো সরবরাহ করবে। উদাহরণের উপরের-বাম কোণে স্ক্রিনশটটি নীচে দেখুন।

এখানে চিত্র বর্ণনা লিখুন

  1. একটি জুম আউট স্ক্রিনশট এটি 367px বাই 727px হতে দেখায়:

এখানে চিত্র বর্ণনা লিখুন

  1. অবশেষে কেবল Escনির্বাচনটি বাতিল এবং শাটারটি আড়াল করতে টিপুন ।
  2. আপনি যা করছিলেন তা চালিয়ে যান।

খুব ঝরঝরে! আমি এখানে ক্রসহেইর বৈশিষ্ট্যটি পছন্দ করি! খুব সম্পূর্ণ বৈশিষ্ট্যযুক্ত - উইন্ডো নিতে, নির্বাচন করতে, বিলম্ব করতে পারে ইত্যাদি ইত্যাদি
দিনুলি

42

কিভাবে এটা কাজ করে

নীচের স্ক্রিপ্টটি মাউস পয়েন্টারের দুটি অবস্থানের মধ্যে একটি অঞ্চলের আকার পরিমাপ করে।

এটি অনুসরণ হিসাবে কাজ করে:

  1. মাউস পয়েন্টারটিকে প্রথম অবস্থানে রাখুন (ক্লিক না করে)

    এখানে চিত্র বর্ণনা লিখুন

  2. আপনার পছন্দের মূল সংমিশ্রণটি টিপুন (নীচে আরও দেখুন)

  3. দ্বিতীয় অবস্থানে মাউস রাখুন (আবার ক্লিক না করে)

    এখানে চিত্র বর্ণনা লিখুন

  4. আপনার কী সংমিশ্রণটি আবার টিপুন। একটি বিজ্ঞপ্তি আপনাকে এলাকার সঠিক আকার (পিক্স) বলবে।

    এখানে চিত্র বর্ণনা লিখুন

বিকল্প

আপনি কীভাবে আপনাকে অবহিত করতে চান তা চয়ন করতে পারেন (একটি লাইনের একটিকে সংকুচিত করে); হয় একটি বিজ্ঞপ্তি দ্বারা:

এখানে চিত্র বর্ণনা লিখুন

বা একটি জেনিটির তথ্য উইন্ডো:

এখানে চিত্র বর্ণনা লিখুন

(উদাহরণগুলি বিভিন্ন অঞ্চল থেকে প্রাপ্ত)

ব্যবহারবিধি

  1. স্ক্রিপ্টটি ব্যবহার করে xdotool:

    sudo apt-get install xdotool
    
  2. নীচের স্ক্রিপ্টটি খালি ফাইলে অনুলিপি করুন, যে কোনও একটি লাইনকে:

    command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
    

    ( notify-sendবিকল্প দ্বারা অবহিত করা )

    বা:

    command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
    

    জন্য Zenityবিকল্প।

  3. এতে স্ক্রিপ্টটি সংরক্ষণ করুন ~/bin(আপনাকে সম্ভবত ডিরেক্টরি তৈরি করতে হবে) measure_area(কোনও এক্সটেনশন নয়) হিসাবে এবং এটিকে এক্সিকিউটেবল করে তুলুন

  4. স্ক্রিপ্টটি চালানোর জন্য আপনার পছন্দের একটি মূল সংমিশ্রণ যুক্ত করুন: চয়ন করুন: সিস্টেম সেটিংস> "কীবোর্ড"> "শর্টকাটস"> "কাস্টম শর্টকাট"। "+" ক্লিক করুন এবং কমান্ডটি যুক্ত করুন:

    measure_area
    

নোট

  • আপনাকে প্রথমে / লগ আউট করতে হবে
  • আপনি প্রথম / দ্বিতীয় অবস্থান হিসাবে যা গ্রহণ করেন তাতে কোনও তাত্পর্য হয় না; স্ক্রিপ্ট পরম মান পরিমাপ করে ।

এই পান্ডুলিপি

#!/usr/bin/env python3
import subprocess
import os
import math

home = os.environ["HOME"]
area = home+"/"+".measure_area.txt"

def get_pos():
    pos_data = subprocess.check_output(["xdotool", "getmouselocation"]).decode("utf-8")
    return [m[2:] for m in pos_data.split()[:2]]

def confirm():
    get = subprocess.check_output(["xrandr", "--verbose"]).decode("utf-8").split()
    for s in [get[i-1] for i in range(len(get)) if get[i] == "connected"]:
        br_data = float(get[get.index("Brightness:")+1])
        brightness = lambda br: ["xrandr", "--output", s, "--brightness", br]
        flash = ["sleep", "0.1"]
        for cmd in [brightness(str(br_data-0.1)), flash, brightness(str(br_data))]:
            subprocess.call(cmd)

if not os.path.exists(area):
    with open(area, "wt") as measure:
        measure.write(str(get_pos()))
    confirm()
else:
    second = get_pos()
    with open(area) as first_m:
        try:
            first = eval(first_m.read())
            w = int(math.fabs(int(second[0]) - int(first[0])))
            h = int(math.fabs(int(second[1]) - int(first[1])))
            #--- uncomment either one of the lines below:
            # command = ['notify-send', 'Area size', str(w)+' x '+str(h)]
            command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]
            #---
            confirm()
        except SyntaxError:
            text = "Please try again, there was an error in the data"
            command = ['zenity', '--info', '--title', 'Please try again', '--text', text]
        subprocess.Popen(command)
    os.remove(area)

ব্যাখ্যা

স্ক্রিপ্টটি যখন প্রথমবার বলা হয়, তখন xdotoolকমান্ডটি সহ এটি মাউসের বর্তমান অবস্থানটি অর্জন করে :

xdotool getmouselocation

এরপরে .measure_area.txtএটি দ্বিতীয় কলের জন্য অপেক্ষা করে অবস্থানটিকে (অদৃশ্য) ফাইলে সংরক্ষণ করে ।
দ্বিতীয় কলে, এটি ফাইলটি পড়ে, এটিকে সরিয়ে দেয় এবং সঞ্চিত x/yস্থানাঙ্কগুলি সর্বশেষতমগুলির সাথে তুলনা করে এবং তাদের মধ্যবর্তী ক্ষেত্রের আকার গণনা করে।

সম্পাদন করা

স্ক্রিপ্টটি বেশ কয়েকটি উন্নতির সাথে আপডেট করেছে:

  • অনুকূলিত subprocess.Popen()/ subprocess.check_output()আদেশগুলি (@ মুরু, @ ট্রেনগোটকে ধন্যবাদ)
  • প্রথম-ডেটা ফাইলের সাথে কিছু ভুল হওয়ার ক্ষেত্রে একটি মেরামতের প্রক্রিয়া যুক্ত করা হয়েছে (উদাহরণস্বরূপ যদি ব্যবহারকারী প্রথমে xdotoolইনস্টল না করে স্ক্রিপ্টটি চালানোর চেষ্টা করে )
  • প্রথম সমন্বয়কারীগুলির জন্য কী সংমিশ্রণটি টিপলে একটি ছোট কনফার্মিং স্ক্রিন ডিমে ফ্ল্যাশ যুক্ত করা হয়েছে। এটা তোলে ব্যবহারকারী দিতে একটি বিট আরো ব্যবহারকারী বান্ধব বলে মনে হয় কিছু কর্মের নিশ্চিতকরণ ধরনের।

1
অসাধারণ! এখনই এটি চেষ্টা করে দেখায়, পুরোপুরি কাজ করে! ধন্যবাদ! আপনি সত্যিই একটি পদক প্রাপ্য!
দিনুলি

2
প্রশ্নের উত্তর দেওয়ার জন্য @dayuloli! আমি ভালোবাসি এই ভালো জিনিস করছেন।
জ্যাকব Vlijm

নিস! +1 টি। কৌতূহলী: কেন এর Popen(['/bin/bash',...বদলে Popen(['zenity', '--info', ...?
মুড়ু

1
কোট দিয়ে ফিডিং? ওও এর command = ['zenity', '--info', '--title', 'Area Size', '--text', str(w) + ' x ' + str(h)]; subprocess.Popen(command)সাথে অনেক কম গণ্ডগোলের প্রয়োজন 'এবং "আমি মনে করি।
মুরু

1
একই পরিবর্তন কি জন্য করা যেতে পারে xdotools? এরকম কিছু check_output(['xdotools', 'getmouseposition'])?
ফাঁকা

2

ঝাল ব্যবহার

নির্বাচনের ক্ষেত্র নির্ধারণের আর একটি সহজ উপায় হ'ল slop(সিলেক্ট অপারেশন), একটি কমান্ড-লাইন ইউটিলিটি "যা ব্যবহারকারী থেকে একটি নির্বাচনের জন্য অনুসন্ধান করে এবং অঞ্চলটি স্টাডআউটে প্রিন্ট করে using"

slopতুলনামূলকভাবে নতুন একটি সরঞ্জাম এবং এখনও ডেবিয়ান / উবুন্টুর জন্য প্যাকেজ করা হয়নি। এটি যেমন দাঁড়িয়েছে আপনাকে এটি উত্স থেকে সংকলন করতে হবে:

sudo apt-get install build-essential cmake libxext-dev
git clone https://github.com/naelstrof/slop.git
cd slop
cmake ./
make && sudo make install

ইনস্টলেশন সবচেয়ে কঠিন অংশ। slopনিজেই কাজ করা খুব সহজ। উদাহরণস্বরূপ, নীচের ওয়ান-লাইনার আপনাকে একটি স্ক্রিন অঞ্চল নির্বাচন করতে অনুরোধ করবে এবং উভয়ই ফলাফলটি বিজ্ঞপ্তি হিসাবে প্রদর্শন করবে এবং ক্লিপবোর্ডে এটি লিখবে:

eval $(slop -t 0 -b 1) && notify-send  "Selection info" "Area: ${W} x ${Y}px \n Position: X = ${X}px, Y = ${Y}px" && echo ${W}x${H} | xsel -bi

স্ক্রীনশট:

এখানে চিত্র বর্ণনা লিখুন

ব্যবহৃত কমান্ডগুলির দ্রুত ভাঙ্গন:

  • slop -t 0 -b 1- ব্যবহারকারীকে একটি স্ক্রিন অঞ্চল নির্বাচন করতে অনুরোধ করুন; পূর্ণ উইন্ডোজ ( -t 0) নির্বাচন করবেন না , নির্বাচন সীমানা 1px ( -b 1) এ সেট করুন
  • eval $(...)- slopভেরিয়েবলগুলিতে আউটপুট পড়ুন
  • notify-send ... - নির্বাচিত অঞ্চল সম্পর্কিত তথ্য সহ জিইউআই বিজ্ঞপ্তি প্রেরণ করুন
  • echo ${W}x${H} | xsel -bi- ক্লিপবোর্ডে মাত্রাগুলি অনুলিপি করুন (প্রয়োজন xselsudo apt-get install xsel)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.