[Kde-pim] Review Request: Don't always recompress contact photos when saving

Sebastian Scheibner asamk at gmx.de
Sat Oct 6 19:33:59 BST 2012


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/106745/
-----------------------------------------------------------

(Updated Oct. 6, 2012, 6:33 p.m.)


Review request for KDEPIM-Libraries.


Changes
-------

Removed asymmetry of the two getter/setters involved as mentioned by Kevin on the mailing list.
Now the two setter methods (setData and setRawData) are cheap operations, they only set their value and reset the other one.
Then in the two getters the data is converted if necessary:
If the raw data was set, the QImage is only loaded when Picture::data() is called and cached for multiple accesses (therefore mData is declared mutable, thanks for the hint Kevin).
If the image data was set, the image is stored in a QByteArray in Picture::rawData() and also cached.

I really like this design, as now the complete loading and saving of the image is inside the Picture class.
This also simplifies the VCardTool::createPicture method :-)


Description
-------

When changing a contact with a photo, the photo is recompressed when saving (even though the photo wasn't changed). That's because the photo is loaded into a QImage and when the contact is saved, the QImage is compressed as JPEG again (or PNG if it contains an alpha-channel, which most don't).

This patch stores the raw base64 photo data from the vcard as a QByteArray in KABC::Picture. If the photo is not changed, this QByteArray is simply used when saving the contact, so there's no recompression and quality loss. If the photo was changed it gets compressed as JPEG as before.

fixes this bug: https://bugs.kde.org/show_bug.cgi?id=307570


This addresses bug 307570.
    http://bugs.kde.org/show_bug.cgi?id=307570


Diffs (updated)
-----

  kabc/picture.h bf9745c 
  kabc/picture.cpp 0a51c8b 
  kabc/vcardtool.cpp a742788 

Diff: http://git.reviewboard.kde.org/r/106745/diff/


Testing
-------

compiled kdepimlibs/kabc with kde 4.9.2

- created a new contact in kaddressbook and added a photo. exported the contact.
- changed the photo and exported the contact again
- the image data in the exported file didn't change


Thanks,

Sebastian Scheibner

_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list