انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: hashak در 03 اردیبهشت 1397، 09:53 ب‌ظ

عنوان: تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: hashak در 03 اردیبهشت 1397، 09:53 ب‌ظ
من این کد رو نوشتم برای نمایش دادن تصویر

from PIL import Image
im = "/home/sh/Desktop/main-folder/memory.jpeg"
Image.open(im).show()

وقتی کد رو اجرا می‌کنم تصویر در نمایشگر تصویر image magick باز می‌شه. چطور می‌تونم کاری کنم تا در نمایشگر تصویری که به صورت پیش‌فرض روی سیستم من نصب است باز بشه؟
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: Nelliel در 03 اردیبهشت 1397، 10:03 ب‌ظ
من این کد رو نوشتم برای نمایش دادن تصویر

from PIL import Image
im = "/home/ha/Desktop/main-folder/memory.jpeg"
Image.open(im).show()

وقتی کد رو اجرا می‌کنم تصویر در نمایشگر تصویر image magick باز می‌شه. چطور می‌تونم کاری کنم تا در نمایشگر تصویری که به صورت پیش‌فرض روی سیستم من نصب است باز بشه؟

نمی‌دونم دقیقا چقدر برات مهمه که از PIL استفاده بشه، اما اگر مهم نیست: (مثلا)
(1)[22:02][ArchLinux][~]$ python3
Python 3.6.5 (default, Apr 12 2018, 22:45:43)
[GCC 7.3.1 20180312] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.sys
os.sys            os.sysconf(       os.sysconf_names  os.system(       
>>> os.system("viewnior /path/to/file")
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: hashak در 03 اردیبهشت 1397، 10:35 ب‌ظ
استفاده از PIL الان برام خیلی مهم نیست،  برای من خطای Permission denied می‌ده، من از Python 3.5.2 استفاده می‌کنم. من اشتباه کردم یا باید قبلش کار دیگه‌ای کنم؟

python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("/home/sh/Desktop/main-folder/27879250.jpg")
sh: 1: /home/sh/Desktop/main-folder/27879250.jpg: Permission denied
32256
>>>
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: Nelliel در 03 اردیبهشت 1397، 10:57 ب‌ظ
استفاده از PIL الان برام خیلی مهم نیست،  برای من خطای Permission denied می‌ده، من از Python 3.5.2 استفاده می‌کنم. من اشتباه کردم یا باید قبلش کار دیگه‌ای کنم؟

python3
Python 3.5.2 (default, Nov 23 2017, 16:37:01)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system("/home/sh/Desktop/main-folder/27879250.jpg")
sh: 1: /home/sh/Desktop/main-folder/27879250.jpg: Permission denied
32256
>>>

باید یه ابزار برای اینکه باهاش تصویر را اجرا کنه انتخاب کنید.

مثلا با feh:
>>> import os
>>> os.system("feh /home/sh/Desktop/main-folder/27879250.jpg")
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: hashak در 03 اردیبهشت 1397، 11:03 ب‌ظ
نقل‌قول
باید یه ابزار برای اینکه باهاش تصویر را اجرا کنه انتخاب کنید.

مثلا با feh:
>>> import os
>>> os.system("feh /home/sh/Desktop/main-folder/27879250.jpg")

بسیار عالی و تشکر فراوان.
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: hashak در 03 اردیبهشت 1397، 11:09 ب‌ظ
ایا راهی وجود داره که نمایشگر تصویر پیش‌فرض سیستم به شکل خودکار شناسایی بشه و نیازی به وارد کردن دستی اسمش نباشه؟
عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: Nelliel در 04 اردیبهشت 1397، 05:02 ب‌ظ
ایا راهی وجود داره که نمایشگر تصویر پیش‌فرض سیستم به شکل خودکار شناسایی بشه و نیازی به وارد کردن دستی اسمش نباشه؟

نرم‌افزار‌های پیش‌گزیده در پرونده زیر ذخیره می‌شوند:

sudo vim /usr/share/applications/mimeinfo.cache
در صورتی که کاربر چیزی تعیین کرده باشه در اینجا می‌تونید از این فایل متنی متوجه بشید که ابزار پیش‌فرضش برای باز کردن تصاویر چی هست.

یا حتی می‌تونی از xdg-open استفاده کنی.

مثلا:
(3)[16:42][ArchLinux][~]$ cat /usr/share/applications/mimeinfo.cache | grep image
application/x-cd-image=imagewriter.desktop;engrampa.desktop;
application/x-raw-disk-image=imagewriter.desktop;
image/bmp=gpicview.desktop;feh.desktop;gimp.desktop;
image/eps=org.pwmt.zathura-ps.desktop;
image/g3fax=gimp.desktop;
image/gif=gpicview.desktop;feh.desktop;gimp.desktop;
image/jp2=gimp.desktop;
image/jpeg=gpicview.desktop;feh.desktop;gimp.desktop;
image/jpeg2000=gimp.desktop;
image/jpg=gpicview.desktop;feh.desktop;
image/jpx=gimp.desktop;
image/pjpeg=feh.desktop;
image/png=gpicview.desktop;feh.desktop;gimp.desktop;
image/svg+xml=gpicview.desktop;gimp.desktop;
image/svg-xml=gpicview.desktop;
image/tiff=gpicview.desktop;evince.desktop;feh.desktop;gimp.desktop;
image/vnd.djvu=org.pwmt.zathura-djvu.desktop;
image/vnd.djvu+multipage=evince.desktop;org.pwmt.zathura-djvu.desktop;
image/x-bmp=gpicview.desktop;feh.desktop;
image/x-bzeps=evince.desktop;
image/x-compressed-xcf=gimp.desktop;
image/x-eps=org.pwmt.zathura-ps.desktop;evince.desktop;
image/x-fits=gimp.desktop;
image/x-gimp-gbr=gimp.desktop;
image/x-gimp-gih=gimp.desktop;
image/x-gimp-pat=gimp.desktop;
image/x-gzeps=evince.desktop;
image/x-icon=gimp.desktop;
image/x-pcx=gpicview.desktop;feh.desktop;gimp.desktop;
image/x-png=feh.desktop;
image/x-portable-anymap=feh.desktop;gimp.desktop;
image/x-portable-bitmap=gpicview.desktop;feh.desktop;gimp.desktop;
image/x-portable-graymap=feh.desktop;gimp.desktop;
image/x-portable-greymap=gpicview.desktop;
image/x-portable-pixmap=gpicview.desktop;feh.desktop;gimp.desktop;
image/x-psd=gimp.desktop;
image/x-psp=gimp.desktop;
image/x-sgi=gimp.desktop;
image/x-targa=gpicview.desktop;
image/x-tga=gpicview.desktop;feh.desktop;gimp.desktop;
image/x-wmf=gimp.desktop;
image/x-xbitmap=feh.desktop;gimp.desktop;
image/x-xcf=gimp.desktop;
image/x-xcursor=gimp.desktop;
image/x-xpixmap=gimp.desktop;
image/x-xwindowdump=gimp.desktop;
(4)[16:43][ArchLinux][~]$

بعد از این که اون پرونده‌ها را خوندی، می‌تونی از رجکس هم استفاده کنی برای پیدا کردن نوشته‌ مورد نظر:
(2)[17:00][ArchLinux][~]$ python3
Python 3.6.5 (default, Apr 12 2018, 22:45:43)
[GCC 7.3.1 20180312] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> file = open('/usr/share/applications/mimeinfo.cache', 'r')
>>> reading = file.read()
>>> reading

(در همون interpreter پایتون)

import re
help re


البته‌های راه‌های زیادی هست، من اصلا وقت نذاشتم که بخوام برات چیزی بنویسم، ایده‌ کلی را دادم، اگر موفق نشدی، بگو خودم برات می‌نویسم.

عنوان: پاسخ : تغییر نمایشگر تصویر پیش‌فرض PIL پایتون
ارسال شده توسط: hashak در 05 اردیبهشت 1397، 09:18 ب‌ظ
تشکر. من از این روش استفاده کردم و داره کار می‌کنه.
user_app = open("/usr/share/applications/mimeinfo.cache").read()

def find_app(user_app, first, last):
    start = user_app.index(first) + len(first)
    end = user_app.index(last, start)
    return user_app[start:end]

image_viewer = find_app(user_app, "image/bmp=", ".desktop;")
print(image_viewer)

 دلیل انتخاب image/bmp= این بود که فکر کردم فرمت bmp خیلی غریبه  ;D و به همین خاطر سیستم، نمایشگر تصویر پیش‌فرض رو  به اون اختصاص می‌ده.