How to create an image-based survey?
I would like to create a form in which some questions are a series of image choices, i.e. select photo one, photo two or photo three. I can add images easily enough, but to actually use an images as responses in a questionnaire seems to be entirely different. I'm a complete novice, so any advice would be appreciated.
There are a number of ways you could do this. Probably the easiest is to include a check box next to each so the user can select one. Just give each check box in the group the same name and different export value, and the user will be able to select at most one from the group, or none.
An alternative is to use buttons to contain the images, and when one is selected, it's border color or background color could change to indicate which is selected. This will require a bit of JavaScript, bit it's not too complicated. If this sounds like something you'd like to pursue and need some help, post again.
Similar Messages
-
How to create a report based on selected item from Select list?
Hi,
I have created a tables_LOV based on:
select table_name d, table_name r from user_tab_cols
where column_name like '%_type%'
Then I created a page item ListOfTables, Display as select list and pointing to tables_LOV.
I run the page, and i can select the table i want from the drop down list.
How to create a report based on the selected item? (ex: select * from selected_table)
many thanks in advance
SalahHi Salah,
Allright, have a look at this page: http://apex.oracle.com/pls/apex/f?p=vincentdeelen:collection_report
I think that simulates what you're trying to accomplish. I've set up the simplest method I could think of.
The report is based on an apex collection. If you are not familiar with that, you should study the documentation: APEX_COLLECTION
To recreate my example you should:
1) create an (interactive) report on your collection
SELECT *
FROM APEX_collections
WHERE collection_name = 'MY_COLLECTION'
2) create a page_item select list for the tables you want to display (in my case this is called "P38_TABLES" )
3) create a dynamic action that triggers on change of your select list page_item. The dynamic action must be a PL/SQL procedure perfoming the following code:
declare
l_query varchar2(4000);
begin
l_query := 'select * from '||:P38_TABLES;
if apex_collection.collection_exists
( p_collection_name => 'MY_COLLECTION' )
then
apex_collection.delete_collection
( p_collection_name => 'MY_COLLECTION' );
end if;
apex_collection.create_collection_from_query
( p_collection_name => 'MY_COLLECTION'
, p_query => l_query
end;
Make sure you add your page_item to the "Page Items to Submit" section.
4) Add an extra true action that does a refresh of the report region.
Here are two pictures describing the da:
http://www.vincentdeelen.com/images/otn/OTN_COLLECTION_REPORT_DA1.png
http://www.vincentdeelen.com/images/otn/OTN_COLLECTION_REPORT_DA2.png
Good luck and regards,
Vincent
http://vincentdeelen.blogspot.com -
How to create Edit Image in my form
hi All,
I have a form with header and detail, in my detail block i need to add Edit Image in my form. When i click on this i should be able to open one of my text column.
can any one please help me how to create new images....Siva,
There is a different Technology Stack associated with the Enterprise Business Suite (EBS). amitphynyl is correct with the description of how to create a button with the edit.ico assigned to it, but with the EBS, you will want to speak to your DBA to get a list of all the Icons that are available as you will have more icons with the EBS than are available with a standard install of Forms Builder 6i. I would also suggest you ask your DBA to give you a copy of all the Icons so you can add them to your Forms Builder installation so they will be available to you during design of your Form.
I would also recommend that you review the Oracle Applications User Interface Standards for Forms-Based Products guide in the Oracle Applications Documentation web site to ensure your Custom Form conforms to Oracle guidelines.
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly. -
How to create a report based on a DataSet programatically
I'm working on a CR 2008 Add-in.
Usage of this add-in is: Let the user choose from a list of predefined datasets, and create a totally empty report with this dataset attached to is. So the user can create a report based on this dataset.
I have a dataset in memory, and want to create a new report in cr2008.
The new report is a blank report (with no connection information).
If I set the ReportDocument.SetDataSource(Dataset dataSet) property, I get the error:
The report has no tables.
So I must programmatically define the table definition in my blank report.
I found the following article: https://boc.sdn.sap.com/node/869, and came up with something like this:
internal class NewReportWorker : Worker
public NewReportWorker(string reportFileName)
: base(reportFileName)
public override void Process()
DatabaseController databaseController = ClientDoc.DatabaseController;
Table table = new Table();
string tabelName = "Table140";
table.Name = tabelName;
table.Alias = tabelName;
table.QualifiedName = tabelName;
table.Description = tabelName;
var fields = new Fields();
var dbField = new DBField();
var fieldName = "ID";
dbField.Description = fieldName;
dbField.HeadingText = fieldName;
dbField.Name = fieldName;
dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
fields.Add(dbField);
dbField = new DBField();
fieldName = "IDLEGITIMATIEBEWIJS";
dbField.Description = fieldName;
dbField.HeadingText = fieldName;
dbField.Name = fieldName;
dbField.Type = CrFieldValueTypeEnum.crFieldValueTypeInt64sField;
fields.Add(dbField);
// More code for more tables to add.
table.DataFields = fields;
//CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo info =
// new CrystalDecisions.ReportAppServer.DataDefModel.ConnectionInfo();
//info.Attributes.Add("Databse DLL", "xxx.dll");
//table.ConnectionInfo = info;
// Here an error occurs.
databaseController.AddTable(table, null);
ReportDoc.SetDataSource( [MyFilledDataSet] );
//object path = @"d:\logfiles\";
//ClientDoc.SaveAs("test.rpt", ref path, 0);
The object ClientDoc referes to a ISCDReportClientDocument in a base class:
internal abstract class Worker
private ReportDocument _ReportDoc;
private ISCDReportClientDocument _ClientDoc;
private string _ReportFileName;
public Worker(string reportFileName)
_ReportFileName = reportFileName;
_ReportDoc = new ReportDocument();
// Load the report from file path passed by the designer.
_ReportDoc.Load(reportFileName);
// Create a RAS Document through In-Proc RAS through the RPTDoc.
_ClientDoc = _ReportDoc.ReportClientDocument;
public string ReportFileName
get
return _ReportFileName;
public ReportDocument ReportDoc
get
return _ReportDoc;
public ISCDReportClientDocument ClientDoc
get
return _ClientDoc;
But I get an "Unspecified error" on the line databaseController.AddTable(table, null);
What am i doing wrong? Or is there another way to create a new report based on a DataSet in C# code?Hi,
Have a look at the snippet code below written for version 9 that you might accommodate to CR 2008, it demonstrates how to create a report based on a DataSet programmatically.
//=========================================================================
+ * the following two string values can be modified to reflect your system+
+ ************************************************************************************************/+
+ string mdb_path = "C:
program files
crystal decisions
crystal reports 9
samples
en
databases
xtreme.mdb"; // path to xtreme.mdb file+
+ string xsd_path = "C:
Crystal
rasnet
ras9_csharp_win_datasetreport
customer.xsd"; // path to customer schema file+
+ // Dataset+
+ OleDbConnection m_connection; // ado.net connection+
+ OleDbDataAdapter m_adapter; // ado.net adapter+
+ System.Data.DataSet m_dataset; // ado.net dataset+
+ // CR variables+
+ ReportClientDocument m_crReportDocument; // report client document+
+ Field m_crFieldCustomer;+
+ Field m_crFieldCountry;+
+ void CreateData()+
+ {+
+ // Create OLEDB connection+
+ m_connection = new OleDbConnection();+
+ m_connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdb_path;+
+ // Create Data Adapter+
+ m_adapter = new OleDbDataAdapter("select * from Customer where Country='Canada'", m_connection);+
+ // create dataset and fill+
+ m_dataset = new System.Data.DataSet();+
+ m_adapter.Fill(m_dataset, "Customer");+
+ // create a schema file+
+ m_dataset.WriteXmlSchema(xsd_path);+
+ }+
+ // Adds a DataSource using dataset. Since this does not require intermediate schema file, this method+
+ // will work in a distributed environment where you have IIS box on server A and RAS Server on server B.+
+ void AddDataSourceUsingDataSet(+
+ ReportClientDocument rcDoc, // report client document+
+ System.Data.DataSet data) // dataset+
+ {+
+ // add a datasource+
+ DataSetConverter.AddDataSource(rcDoc, data);+
+ }+
+ // Adds a DataSource using a physical schema file. This method require you to have schema file in RAS Server+
+ // box (NOT ON SDK BOX). In distributed environment where you have IIS on server A and RAS on server B,+
+ // and you execute CreateData above, schema file is created in IIS box, and this method will fail, because+
+ // RAS server cannot see that schema file on its local machine. In such environment, you must use method+
+ // above.+
+ void AddDataSourceUsingSchemaFile(+
+ ReportClientDocument rcDoc, // report client document+
+ string schema_file_name, // xml schema file location+
+ string table_name, // table to be added+
+ System.Data.DataSet data) // dataset+
+ {+
+ PropertyBag crLogonInfo; // logon info+
+ PropertyBag crAttributes; // logon attributes+
+ ConnectionInfo crConnectionInfo; // connection info+
+ CrystalDecisions.ReportAppServer.DataDefModel.Table crTable;+
+ // database table+
+ // create logon property+
+ crLogonInfo = new PropertyBag();+
+ crLogonInfo["XML File Path"] = schema_file_name;+
+ // create logon attributes+
+ crAttributes = new PropertyBag();+
+ crAttributes["Database DLL"] = "crdb_adoplus.dll";+
+ crAttributes["QE_DatabaseType"] = "ADO.NET (XML)";+
+ crAttributes["QE_ServerDescription"] = "NewDataSet";+
+ crAttributes["QE_SQLDB"] = true;+
+ crAttributes["QE_LogonProperties"] = crLogonInfo;+
+ // create connection info+
+ crConnectionInfo = new ConnectionInfo();+
+ crConnectionInfo.Kind = CrConnectionInfoKindEnum.crConnectionInfoKindCRQE;+
+ crConnectionInfo.Attributes = crAttributes;+
+ // create a table+
+ crTable = new CrystalDecisions.ReportAppServer.DataDefModel.Table();+
+ crTable.ConnectionInfo = crConnectionInfo;+
+ crTable.Name = table_name;+
+ crTable.Alias = table_name;+
+ // add a table+
+ rcDoc.DatabaseController.AddTable(crTable, null);+
+ // pass dataset+
+ rcDoc.DatabaseController.SetDataSource(DataSetConverter.Convert(data), table_name, table_name);+
+ }+
+ void CreateReport()+
+ {+
+ int iField;+
+ // create ado.net dataset+
+ CreateData();+
+ // create report client document+
+ m_crReportDocument = new ReportClientDocument();+
+ m_crReportDocument.ReportAppServer = "127.0.0.1";+
+ // new report document+
+ m_crReportDocument.New();+
+ // add a datasource using a schema file+
+ // note that if you have distributed environment, you should use AddDataSourceUsingDataSet method instead.+
+ // for more information, refer to comments on these methods.+
+ AddDataSourceUsingSchemaFile(m_crReportDocument, xsd_path, "Customer", m_dataset);+
+ +
+ // get Customer Name and Country fields+
+ iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Customer Name", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
+ m_crFieldCustomer = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
+ iField = m_crReportDocument.Database.Tables[0].DataFields.Find("Country", CrFieldDisplayNameTypeEnum.crFieldDisplayNameName, CeLocale.ceLocaleUserDefault);+
+ m_crFieldCountry = (Field)m_crReportDocument.Database.Tables[0].DataFields[iField];+
+ // add Customer Name and Country fields+
+ m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCustomer);+
+ m_crReportDocument.DataDefController.ResultFieldController.Add(-1, m_crFieldCountry);+
+ // view report+
+ crystalReportViewer1.ReportSource = m_crReportDocument;+
+ }+
+ public Form1()+
+ {+
+ //+
+ // Required for Windows Form Designer support+
+ //+
+ InitializeComponent();+
+ // Create Report+
+ CreateReport();+
+ //+
+ // TODO: Add any constructor code after InitializeComponent call+
+ //+
+ }+//========================================================================= -
HOW TO CREATE A DFF BASED ON ORGANIZATION
Hi,
I want to create a DFF which would have 5 different context values, i want 2 of them to be available in one organization and other 3 in other organization, how i can achieve this.
Regards,
Usman.Hello,
"HOW TO CREATE A DFF BASED ON ORGANIZATION"
1- I will create a customized table having two columns one is for context name and other is for org_id,
2- then i will create a value set on this table and will use this on 'Value Set' field on 'Descriptive Flexfield Segments' window.
3- In the where clause of this value set i will pass org_id from profile $PROFILES$.ORG_ID,
4- this will restrict the context based on org_id And user will only have context related to there org
I have successfully achieved the above requirment.
Find below the restriction you should follow so that Value set is available in LOVs on "Descriptive Flexfield Segments" window:
Value sets used for context fields must obey certain restrictions or they will not be available to use in the Value Set field in the Context Field region of the Descriptive
Flexfield Segments window:
• Format Type must be Character (Char)
• Numbers Only must not be checked (alphabetic characters are allowed)
• Uppercase Only must not be checked (mixed case is allowed)
• Right-justify and Zero-fill Numbers must not be checked
• Validation Type must be Independent or Table
If the validation type is Independent:
• the value set maximum size must be less than or equal to 30
If the validation type is Table:
• the ID Column must be defined, it must be Char or Varchar2 type, and its size must
be less than or equal to 30. The ID column corresponds to the context field value
code (the internal, non-translated context field value).
• the Value Column must be defined, it must be Char or Varchar2 type, and its size
must be less than or equal to 80. The Value column corresponds to the context field
value name (the displayed context field value).
• the value set maximum size must be less than or equal to 80
All context field values (the code values) you intend to use must exist in the value set. If
you define context field values in the Context Field Values block of the Descriptive
Flexfield Segments window that do not exist in the context field value set, they will be
ignored, even if you have defined context-sensitive segments for them.
Best Regards,
Usman. -
How to create a record based on the name of a file in the file-system?
Hi,
With a lot of pictures I want to have a database to gather some information about these pictures.
First question is how to generate a record based on a file in the file system?
e.g. the pictures are "c:\fotos\2009\01\disc_001.jpg" to "c:\foto\2009\01\dis_98.jpg" .
now i want to create records with as one of the attributes the name of the picture (not the picture itself). how to create these records (based on the information of the file-ssytem). i.e. the number of records should be the same as the number of pictures.
any suggestions?
any reaction will be appreciated.
LeoLink to Create directory
http://www.adp-gmbh.ch/ora/sql/create_directory.html
You can create a list of files in the directory and read the list files from that directory.
[UTL_FILE Documentation |http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10802/u_file.htm#996728]
[Solution using Java|http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:439619916584]
SS -
How to create transparent image at run-time?
How to create transparent image at run-time? I mean I want to create a (new) transparent image1, then show other (loaded) transparent image2 to image1, then show image1 to a DC. The problem is - image1 has non-transparent background...
i'm not sure, but you can set the alpha value to 0 in all pixels which are 'in' the background..
greetz
chris -
How to create dynamic context based on a structure defined in the program?
Hi Experts,
I need to create a dynamic context based on a structure wa_struc which i have define programatically.
When I pass wa_struc to structure_name parameter of create_nodeinfo_from_struc, i get a runtime error:
"Parameter STRUCTURE_NAME contains an invalid value wa_struc."
How to create dynamic context based on a structure defined in the program?
I have written the code like this:
TYPES: BEGIN OF t_type,
v_carrid TYPE sflight-carrid,
v_connid TYPE sflight-connid,
END OF t_type.
Data: i_struc type table of t_type,
wa_struc type t_type.
data: dyn_node type ref to if_wd_context_node.
data: rootnode_info type ref to if_wd_context_node_info.
rootnode_info = wd_context->get_node_info( ).
clear i_struc. refresh i_struc.
select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
cl_wd_dynamic_tool=>create_nodeinfo_from_struct(
parent_info = rootnode_info
node_name = 'dynflight'
structure_name = 'wa_struc'
is_multiple = abap_true ).
dyn_node = wd_context->get_child_node( name = 'dynflight' ).
dyn_node->bind_table( i_struc ).
Thanks
Gopal
Message was edited by: gopalkrishna baligaHi Michelle,
First of all Special thanks for your informative answers to my other forum questions. I really appreciate your help.
Coming back to this question I am still waiting for an answer. Please help. Note that my structure is not in a dictionary.
I am trying to create a new node. That is
CONTEXT
- DYNFLIGHT
CARRID
CONNID
As you see above I am trying to create 'DYNFLIGHT' along with the 2 attributes which are inside this node. The structure of the node that is, no.of attributes may vary based on some condition. Thats why I am trying to create a node dynamically.
Also I cannot define the structure in the ABAP dictionary because it changes based on condition
I have updated my code like the following and I am getting error:
TYPES: BEGIN OF t_type,
CARRID TYPE sflight-carrid,
CONNID TYPE sflight-connid,
END OF t_type.
Data: i_struc type table of t_type,
dyn_node type ref to if_wd_context_node,
rootnode_info type ref to if_wd_context_node_info,
i_node_att type wdr_context_attr_info_map,
wa_node_att type line of wdr_context_attr_info_map.
wa_node_att-name = 'CARRID'.
wa_node_att-TYPE_NAME = 'SFLIGHT-CARRID'.
insert wa_node_att into table i_node_att.
wa_node_att-name = 'CONNID'.
wa_node_att-TYPE_NAME = 'SFLIGHT-CONNID'.
insert wa_node_att into table i_node_att.
clear i_struc. refresh i_struc.
select carrid connid into corresponding fields of table i_struc from sflight where carrid = 'AA'.
rootnode_info = wd_context->get_node_info( ).
rootnode_info->add_new_child_node( name = 'DYNFLIGHT'
attributes = i_node_att
is_multiple = abap_true ).
dyn_node = wd_context->get_child_node( 'DYNFLIGHT' ).
dyn_node->bind_table( i_struc ).
l_ref_interfacecontroller->set_data( dyn_node ).
But now I am getting the following error :
The following error text was processed in the system PET : Line types of an internal table and a work area not compatible.
The error occurred on the application server FMSAP995_PET_02 and in the work process 0 .
The termination type was: RABAX_STATE
The ABAP call stack was:
Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program CL_WDR_CONTEXT_NODE_VAL=======CP
Method: GET_REF_TO_TABLE of program CL_SALV_WD_DATA_TABLE=========CP
Method: EXECUTE of program CL_SALV_WD_SERVICE_MANAGER====CP
Method: APPLY_SERVICES of program CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: REFRESH of program CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_VIEW~MODIFY of program CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMPONENT~VIEW_MODIFY of program CL_SALV_WD_A_COMPONENT========CP
-Gopal
Message was edited by: gopalkrishna baliga -
How to create report image like artwork demo
Dear Pakars
How to create report image like artwork demo ?
Thanks
ImansyahHello,
Are you asking how to include images in a report? If so, take a look at the declarative blob support documentation -
http://www.oracle.com/technology/obe/apex/apex31nf/apex31blob.htm
Hope this helps,
John.
Blog: http://jes.blogs.shellprompt.net
Work: http://www.apex-evangelists.com
Author of Pro Application Express: http://tinyurl.com/3gu7cd
REWARDS: Please remember to mark helpful or correct posts on the forum, not just for my answers but for everyone! -
How to create an image in an applikation
very very very very simple question:
how to create an image in an applikation!?thanks in advance!Image image=createImage(width,height)check out the IMAGE class in the API. as you said, this is simple stuff, thus you should be able to easily find the answer.
-
i need to know how to create an image viewer would appreciate
help thanksyou can use loadMovie() to load a jpg image into flash (and
if you're using flash 8 you can load other image formats into
flash) and use it to create an image viewer. -
How to create an ODS based on a particular table
Can Anybody tell me how to create an ODS based on a particular table and what are the basic requirements for that
Hi Priya,
If my understanding is right, you want to create an ODS based on a database table.
Here, I will assume that you already know how to create an ODS. Otherwise, do let me know so that I can guide you on how to do it.
Basically, an ODS consists of two important sections i.e.
1. Key Fields
2. Data Fields
First, we must identify what are the field(s) in the table that make its records unique. You can think of this as database's primary key(s) e.g. Document Number. These field(s) must be inserted in ODS' Key Fields section. You can only insert Characteristics in Key Fields and the InfoObjects in this section will uniquely identify an ODS record or line item.
Next, you can include the rest of the fields (either Characteristics and Key Figures) in ODS' Data Fields and activate the ODS.
Having done that, you have already successfully create an ODS based on a database table.
Hope that helps.
Best wishes,
Syuhair. -
How to convert from image based pdf to text based pdf
I have Adobe 9 Pro. How to convert from image based pdf to text based pdf? For example, if someone emails a scanned pdf to me, how do I convert that document into a text based pdf?
To perform OCR, open the document and select: Document > OCR Text Recognition > Recognize Text Using OCR
More information on the various options is in the Acrobat help doc. -
How to create the PO based on requisition through interface.
Hi,
In P2P,
How to create the PO based on requisition through interface.
Regards,
SrikanthHi Srikanth,
I knew it from frontend.
But i want from backend using INTERFACE .please see if this can help you
http://appshub-hussy.blogspot.com/2010/10/requisition-and-purchase-order-queries.html
http://oraclemaniac.com/2012/04/17/sql-queries-to-get-requisition-po-and-po-receipt-details/
SQL to link Requisitions with Purchase Orders
http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/how-to-find-the-po-number-if-we-give-requisition-number-3161211
http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/need-requisition-sql-query-1338985
;) AppSmAstI ;)
sharing is CAring -
How to create a shape based on the shape of an image
I want to erase a portion of a mask based on the shape of an image. how can i do this? btw how to create a circle? thx
Both your questions leave room for imagining what you might really mean, but here's a shot at answering them.
If you have a mask that you want to erase portions of based on an image... assuming the mask is a simple rectangle you drew with the rectangle tool, change the opacity of the rectangle's fill in the color panel to make it see-thru, place the mask over the image, and using the eraser tool, erase the portions of the mask that you do not intend to retain using the image below it as a guide.
As for drawing a circle, hover over the rectangle tool and a menu should appear. Select the oval/ellipse tool. To draw a circle, hold down the shift key and draw just as you did for the rectangle. The shift key forces it to retain equal width and height.
Maybe you are looking for
-
hi friends, i have created a normal po with tax code vb. maintained condition records for bed, ecs,secs.when i am capturing excise invoice, it is not showing secs. it is showing bed as bed in po+ irs 16.00, and it is showing ecs. so ca
-
Firefox always on top, can't alt-tab to other open windows/apps
I have updated to 11.0, windows vista. I didn't notice or have this problem before the update. for example if I have firefox open and click on my calculator, the only way I can see it is to minimize firefox. I cannot alt-tab to it nor can I click the
-
Data transfer from one sql server to another sql server in 2005
Hi, Im trying to transfer only one table data from one server database to another server database table.both are in 2005 .Can anyone help?
-
How to use ThreadPoolExecutor / ArrayBlockingQueue with event objects
I am having some trouble figuring out how to use the new java.util.concurrent library for a simple thread pool that has custom threads pulling off event objects from a queue. I started with this kind of code below, which I know is not right but am ha
-
Color profile problem after installing CS4
OK. First, let me post these side-by-side comparisons: As you can see in Image 1 (the "before," left-side photo in each comparison), the colors and overall appearance are distorted. I've read things about gamma but it's all confusing to me. This is s