Wyszukaj
Wyświetlanie wyników dla tagów 'pixbuf' .
-
Witajcie Piszę prosty skrypt ( w zasadzie na własny użytek, ale mogę się podzielić ), do przycinania zdjęć do najpopularniejszych formatów papierów fotograficznych. Szczerze mówiąc, póki co aplikacja obsługuje jako tako jedynie format A6 – gdyż jest jeszcze ciągle w budowie. Przycinanie działa, choć z reguły źle przycina u dołu zdjęcia, jeśli nad górną ramką jest więcej wolnej przestrzeni. Jeśli górna rama jest na górze, wówczas jest dobrze. Nie wiem z czego to wynika, czy błąd jest w moim skrypcie. Czy też błąd leży po stronie biblioteki GdkPixbuf, która notabene partaczy po wycięciu nieco zdjęcie ( spada jakość – pikselizacja ? ). Dlatego zastanawiam się na biblioteką Imlib. Jednak nie wiem czy warto się rzucać, na głęboką wodę, gdyż wydaje mi się że trudniej ją zastosować, niż Pixbuf. Opis listingu dotyczącego skrawka z całości: Zmienne self.picture_view_width oraz self.picture_view_height dotyczą rozmiaru obrazka w kontrolce. Natomiast self.border_x, self.border_y, self.border_width i self.border_height nawiązują to parametrów ramki która to wskazuje jak i o ile przyciąć zdjęcie. Zmienne self.picture_orig_width oraz self.picture_orig_height mówią o rozmiarze zdjęcia adekwatnego do kopii na dysku. Zmienne crop_x, crop_y, crop_width, crop_height dotyczą parametrów wycinki dokonywanej z orginału def photo_crop(self, button): if self.border_x != 0 : bx = self.picture_view_width / self.border_x crop_x = self.picture_orig_width / bx else: crop_x = 0 if self.border_y != 0: by = self.picture_view_height / self.border_y crop_y = self.picture_orig_height / by else: crop_y = 0 bw = self.picture_view_width / self.border_width crop_width = (self.picture_orig_width) / bw - crop_x bh = self.picture_view_height / self.border_height crop_height = (self.picture_orig_height) / bh - crop_y # False - kanał Alpha self.pixbuf_tmp = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, False, 8, crop_width, crop_height) # zera na koncu to dest_x i dest_y self.pixbuf_orig.copy_area(crop_x, crop_y, crop_width, crop_height, self.pixbuf_tmp, 0, 0) print ("crop_x: "+str(crop_x)) print ("crop_y: "+str(crop_y)) print ("crop_width: "+str(crop_width)) print ("crop_height: "+str(crop_height)) if self.format_size == "10x15": if crop_width > crop_height: self.picture_view_width = 600 self.picture_view_height = 400 if crop_height > crop_width: self.picture_view_height = 600 self.picture_view_width = 400 # tylko do testów self.pixbuf_tmp.savev("/home/przem/Obrazy/ZAPISANY.jpg", "jpeg") self.pixbuf_view = self.pixbuf_tmp.scale_simple(self.picture_view_width, self.picture_view_height, GdkPixbuf.InterpType.BILINEAR) self.picture_view_x = 0 self.picture_view_y = 0 self.border_visible = False self.drawing_area.queue_draw() Link do całości: Pakiet RPM i SRPM Tej młodej, pięknej istocie przycięło nieco stopy...