| Summary: | Don't always recompress contact photos when saving | ||
|---|---|---|---|
| Product: | [Applications] kdepimlibs | Reporter: | asamk |
| Component: | kabc | Assignee: | kdepim bugs <pim-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | montel |
| Priority: | NOR | ||
| Version First Reported In: | 4.9 | ||
| Target Milestone: | --- | ||
| Platform: | openSUSE | ||
| OS: | Linux | ||
| Latest Commit: | http://commits.kde.org/kdepimlibs/c0a50e2b6e7a8513d0a768afb35bc7aa3d1748f1 | Version Fixed/Implemented In: | 4.9.3 |
| Sentry Crash Report: | |||
|
Description
asamk
2012-09-29 11:37:27 UTC
didn't test but will look at monday. Thanks for report. "jpeg again (with the default quality 75%)." .?
QString Picture::toString() const
{
QString str;
str += QLatin1String( "Picture {\n" );
str += QString::fromLatin1( " Type: %1\n" ).arg( d->mType );
str += QString::fromLatin1( " IsIntern: %1\n" ).
arg( d->mIntern ? QLatin1String( "true" ) : QLatin1String( "false" ) );
if ( d->mIntern ) {
QByteArray data;
QBuffer buffer( &data );
buffer.open( QIODevice::WriteOnly );
d->mData.save( &buffer, "PNG" );
str += QString::fromLatin1( " Data: %1\n" ).arg( QString::fromLatin1( data.toBase64() ) );
} else {
str += QString::fromLatin1( " Url: %1\n" ).arg( d->mUrl );
}
str += QLatin1String( "}\n" );
return str;
}
it's store as png no ?
no, that function is not used to store it in the vcf. It only seems useful for debugging.
the picture is loaded and stored in the file vcardtool.cpp:
VCardLine VCardTool::createPicture( const QString &identifier, const Picture &pic ) const
{
VCardLine line( identifier );
if ( pic.isIntern() ) {
if ( !pic.data().isNull() ) {
QByteArray input;
QBuffer buffer( &input );
buffer.open( QIODevice::WriteOnly );
if ( !pic.data().hasAlphaChannel() ) {
pic.data().save( &buffer, "JPEG" );
line.setValue( input );
line.addParameter( QLatin1String( "encoding" ), QLatin1String( "b" ) );
line.addParameter( QLatin1String( "type" ), QLatin1String( "image/jpeg" ) );
} else {
pic.data().save( &buffer, "PNG" );
line.setValue( input );
line.addParameter( QLatin1String( "encoding" ), QLatin1String( "b" ) );
line.addParameter( QLatin1String( "type" ), QLatin1String( "image/png" ) );
}
}
} else if ( !pic.url().isEmpty() ) {
line.setValue( pic.url() );
line.addParameter( QLatin1String( "value" ), QLatin1String( "URI" ) );
}
return line;
}
The 75% quality I found from looking in the Qt source code, what QImage::save() does, if no quality is specified.
Ok will look at it. I made a patch for this: https://git.reviewboard.kde.org/r/106745 Git commit c0a50e2b6e7a8513d0a768afb35bc7aa3d1748f1 by Allen Winter. Committed on 23/10/2012 at 23:40. Pushed by winterz into branch 'master'. Don't always recompress contact photos when saving The patch from RB did not apply cleanly so I had to hand-patch in a few files. I hope I didn't screwup. Thanks for the patch Sebastian! REVIEW: 106745 FIXED-IN: 4.9.3 M +11 -13 akonadi/contact/editor/imagewidget.cpp M +3 -1 akonadi/contact/editor/imagewidget.h M +66 -11 kabc/picture.cpp M +38 -5 kabc/picture.h M +138 -23 kabc/tests/picturetest.cpp M +10 -3 kabc/tests/picturetest.h M +17 -31 kabc/vcardtool.cpp http://commits.kde.org/kdepimlibs/c0a50e2b6e7a8513d0a768afb35bc7aa3d1748f1 |