real player free download software latest version for windows 8pinnacle studio 12 ultimate trial free downloadnero v7 8 5 0 downloadnorton 360 v6 premier edition download
Signature capture provides extensive uses in enterprise applications like proof of delivery, inspection forms, sales order agreement, etc. Here is sample program that requests the name with the person and it is signature. The program runs on the canvas view to find the signature after which save it Image.
Please Note: Initially when I wrote the signature capture program it absolutely was saving data for the External Storage but I changed that for the Internal Storage for security. In the example you will notice references to External storage that I didnt remove when I posted this situation so please ignore that. Comments on the readers helped me realize that a number of people need ease storing data to Internal and External Storage, click below for sample
In case you need signature capture for the WEB app or maybe a Hybrid app then no further, click below for sample
package 400samplecode; import ; import ; import ; import ; import ; import ; import ; public class CaptureSignatureActivity extends Activity public static final int SIGNATUREACTIVITY 1; Override public void onCreateBundle savedInstanceState savedInstanceState; ; Button getSignature Button ; new public void onClickView view Intent intent new, ; startActivityForResultintent, SIGNATUREACTIVITY; ; protected void onActivityResultint requestCode, int resultCode, Intent data switchrequestCode case SIGNATUREACTIVITY: if resultCode RESULTOK Bundle bundle ; String status status; done Toast toast this, Signature capture successful!, SHORT;, 105, 50; ; break;
package 400samplecode; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; import ; public class CaptureSignature extends Activity LinearLayout mContent; signature mSignature; Button mClear, mGetSign, mCancel; public static String tempDir; public int count 1; public String current null; private Bitmap mBitmap; View mView; File mypath; private String uniqueId; private EditText yourName; Override public void onCreateBundle savedInstanceState savedInstanceState; NOTITLE; ; tempDir dir /; ContextWrapper cw new ContextWrappergetApplicationContext; File directory dir, PRIVATE; prepareDirectory; uniqueId getTodaysDate getCurrentTime ; current uniqueId ; mypath new Filedirectory, current; mContent LinearLayout ; mSignature new signaturethis, null; ; mSignature, PARENT, PARENT; mClear ; mGetSign ; false; mCancel ; mView mContent; yourName EditText ; new OnClickListener public void onClickView v Log.vlogtag, Panel Cleared; ; false; ; new OnClickListener public void onClickView v Log.vlogtag, Panel Saved; boolean error captureSignature; if!error true; mView; Bundle b new Bundle; status, done; Intent intent new Intent; b; setResultRESULTOK, intent; finish; ; new OnClickListener public void onClickView v Log.vlogtag, Panel Canceled; Bundle b new Bundle; status, cancel; Intent intent new Intent; b; setResultRESULTOK, intent; finish; ; Override protected void onDestroy Log.wGetSignature, onDestory; ; private boolean captureSignature boolean error false; String errorMessage ; errorMessage errorMessage Please enter your Namen; error true; iferror Toast toast this, errorMessage, SHORT;, 105, 50; ; return error; private String getTodaysDate final Calendar c ; int todaysDate 10000 1 100 OFMONTH; todaysDate; todaysDate; private String getCurrentTime final Calendar c ; int currentTime OFDAY 10000 100 ; currentTime; currentTime; private boolean prepareDirectory try if makedirs return true; else return false; catch Exception e ; this, Could not initiate File System. Is Sdcard mounted properly?, ; return false; private boolean makedirs File tempdir new FiletempDir; if ; if File files ; for File file: files if Failed to delete file; return ; public class signature extends View private static final float STROKEWIDTH 5f; private static final float HALFSTROKEWIDTH STROKEWIDTH2; private Paint paint new Paint; private Path path new Path; private float lastTouchX; private float lastTouchY; private final RectF dirtyRect new RectF; public signatureContext context, AttributeSet attrs supercontext, attrs; true; ; ; ; STROKEWIDTH; public void saveView v Log.vlogtag, Width: ; Log.vlogtag, Height: ; ifmBitmap null mBitmap ,, 565;; Canvas canvas new CanvasmBitmap; try FileOutputStream mFileOutStream new FileOutputStreammypath; canvas;, 90, mFileOutStream; ; ; String url getContentResolver, mBitmap, title, null; Log.vlogtag, url: url;//In case you desire to delete the file//boolean deleted ;//Log.vlogtag, deleted: deleted;//If you desire to convert the picture to string use base64 converter catchException e Log.vlogtag, ; public void clear ; invalidate; Override protected void onDrawCanvas canvas path, paint; Override public boolean onTouchEventMotionEvent event float eventX ; float eventY ; true; switch case DOWN: eventX, eventY; lastTouchX eventX; lastTouchY eventY; return true; case MOVE: case UP: resetDirtyRecteventX, eventY; int historySize ; for int i 0; i historySize; i float historicalX i; float historicalY i; expandDirtyRecthistoricalX, historicalY; historicalX, historicalY; eventX, eventY; break; default: debugIgnored touch event: ; return false; invalidateint - HALFSTROKEWIDTH, int - HALFSTROKEWIDTH, int HALFSTROKEWIDTH, int HALFSTROKEWIDTH; lastTouchX eventX; lastTouchY eventY; return true; private void debugString string private void expandDirtyRectfloat historicalX, float historicalY if historicalX historicalX; else if historicalX historicalX; if historicalY historicalY; else if historicalY historicalY; private void resetDirtyRectfloat eventX, float eventY lastTouchX, eventX; lastTouchX, eventX; lastTouchY, eventY; lastTouchY, eventY;
xml version1.0 encodingutf-8? resources string namehello Hello World, CaptureSignatureActivity!/string string nameappname CaptureSignature/string string nameexternaldir GetSignature/string /resources
1 Change your project build Target to Android 2.3.3
2 CaptureSignature manifest file with version and Theme changes as Holo theme will not be available in API level 10.
xml version1.0 encodingutf-8? manifest /apk/res/android 400samplecode android:versionCode1 android:versionName1.0 uses-sdk android:minSdkVersion10 uses-permission EXTERNALSTORAGE application android:icondrawable/icon android:labelstring/appname activity android:labelstring/appname intent-filter action category /intent-filter /activity activity android:labelSignature Confirmation /application /manifest
xml version1.0 encodingutf-8? LinearLayout android:idid/linearLayout1 android:layoutwidth400dp
convert the string to byte array byte imageAsBytes ;//get reference towards the image view where you desire to display the whole picture ImageView image ;//set the whole picture by decoding the byte array to bitmap imageAsBytes, 0, ;
Did you get this article helpful? Share it!
function var items id: 5911257669603605292, body: Hi, 74br/76Thanks for writing this code. Please give download link for full source code. Also is there anyway to own and test this on emulator.74br/7674br/76Thanks74br/76Sampath, timestamp: 1323389787640, permalink:?showComment0751323389787640c5911257669603605292, author: name: omasampath, profileUrl: /profile/02365124271573119340, displayTime: December 8, 2011 at 7:16 PM, deleteclass: item-control blog-admin pid-67892045, id: 3760722705089359740, body: This would be the complete source code for your android signature application. You just need to copy and paste the code. 74br/7674br/76Yes it can do run about the emulator!, timestamp: 1323405618466, permalink:?showComment0751323405618466c3760722705089359740, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: December 8, 2011 at 11:40 PM, deleteclass: item-control blog-admin pid-1014594234, id: 6451330082257271473, body: Hi, 74br/76Thanks because of this i have an to publish something from the Gestureid/linearLayout shows broken gesture.74br/76Pls assist to avoid, timestamp: 1323846399568, permalink:?showComment0751323846399568c6451330082257271473, author: name: jaya, profileUrl: /profile/10066677771116387104, displayTime: December 14, 2011 at 2:06 AM, deleteclass: item-control blog-admin pid-859214815, id: 3578860537021281310, body: that you are really great!! thank you for work man!!!, timestamp: 1326370425356, permalink:?showComment0751326370425356c3578860537021281310, author: name: Prasildas, profileUrl:, displayTime: January 12, 2012 at 7:13 AM, deleteclass: item-control blog-admin pid-416554753, id: 9019728946206969313, body: It doesnt recognise externaldir. Any suggestions?, timestamp: 1326732819387, permalink:?showComment0751326732819387c9019728946206969313, author: name: davemcavanagh, profileUrl: /profile/12259606973856246137, displayTime: January 16, 2012 at 11:53 AM, deleteclass: item-control blog-admin pid-513954200, id: 2047304198177669230, body: davemcavanagh, 74br/7674br/76the externaldir is only a variable being defined from the file. You can the choice is yours to any value the place you would like to store this signature., timestamp: 1326767865481, permalink:?showComment0751326767865481c2047304198177669230, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: January 16, 2012 at 9:37 PM, deleteclass: item-control blog-admin pid-1014594234, id: 8997797613940316352, body: Thanks. Will this only work together with minSdkVersion7546quot;1346quot;? I have tried running it with 10 and I experience an error74br/76E/AndroidRuntime1248: : Unable to instantiate activity : : in loader 74br/7674br/76Any advice appreciated!, timestamp: 1326795525954, permalink:?showComment0751326795525954c8997797613940316352, author: name: davemcavanagh, profileUrl: /profile/12259606973856246137, displayTime: January 17, 2012 at 5:18 AM, deleteclass: item-control blog-admin pid-513954200, id: 5231123529568416504, body: davemcavanagh, 74br/7674br/76Yes, the applying runs on Android Phone with API level 10. Please see my notes above, I have updated quite a few., timestamp: 1326848157792, permalink:?showComment0751326848157792c5231123529568416504, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: January 17, 2012 at 7:55 PM, deleteclass: item-control blog-admin pid-1014594234, id: 2579966495626214430, body: Thanks millions of it works now! I have only 1 more question.74br/7674br/76I have declared externaldir around my strings file to be a string name. Im sure it is wrong. How do I access my saved signature?74br/7674br/76Cheers, timestamp: 1326969967177, permalink:?showComment0751326969967177c2579966495626214430, author: name: davemcavanagh, profileUrl: /profile/12259606973856246137, displayTime: January 19, 2012 at 5:46 AM, deleteclass: item-control blog-admin pid-513954200, id: 3416292881032611665, body: OK I have figured out that the signature will be stored inside external storage of my device. This is done through 74br/7674br/76getExternalStorageDirectory74br/7674br/76Is there the best way of accessing this external storage in order that I can send the signature to a sqlite database?, timestamp: 1326993072946, permalink:?showComment0751326993072946c3416292881032611665, author: name: davemcavanagh, profileUrl: /profile/12259606973856246137, displayTime: January 19, 2012 at 12:11 PM, deleteclass: item-control blog-admin pid-513954200, id: 7911853046900798534, body: Yes, all you ought to do is only create a FileInputStream as shown below.74br/7674br/76FileInputStream mFileInputStream 75 new FileInputStreammypath;74br/76ByteArrayOutputStream bos 75 new ByteArrayOutputStream;74br/76byte b 75 new byte1024;74br/76int bytesRead 75 0;74br/76while bytesRead 75 b!75 - 1 74br/76 b, 0, bytesRead;74br/7674br/76byte ba 75 ;74br/76String ba;74br/7674br/76- OR - -74br/7674br //to convert directy from file to String.74br/7674br/76I am utilizing the Base64 encoding here. Then you can send this string to Server as XML or JSON. For more information follow through. 74br/7674br/7674a 42 rel7542nofollow4276Convert Image to String and String to Image using Base64 encoding74/a076, timestamp: 1327016175983, permalink:?showComment0751327016175983c7911853046900798534, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: January 19, 2012 at 6:36 PM, deleteclass: item-control blog-admin pid-1014594234, id: 1902447918920194937, body: Hi, 74br/7674br/76This is really what I need, perhaps the biggest issue that I am having is always that I am getting some error saying, 46quot;externaldir is not resolved or just isn't a field46quot; plus the only suggestions are to make a string or rename it. I know it is something simple but I4639;m uncertain what an easy fix could be, I assume it will be to declare this string, assign value, then make use of it where it is called inside the code? Any help will be greatly appreciated, thanks!, timestamp: 1327099442776, permalink:?showComment0751327099442776c1902447918920194937, author: name: Unknown, profileUrl: /profile/08535440796026928247, displayTime: January 20, 2012 at 5:44 PM, deleteclass: item-control blog-admin pid-560204484, id: 6258169492856794994, body: I have added the Project explorer to the Signature Capture App as well as the file. Please see above for ease externaldir., timestamp: 1327113430605, permalink:?showComment0751327113430605c6258169492856794994, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: January 20, 2012 at 9:37 PM, deleteclass: item-control blog-admin pid-1014594234, id: 7565763809324066690, body: What license is this fact under?, timestamp: 1328078829099, permalink:?showComment0751328078829099c7565763809324066690, author: name: Anonymous, profileUrl:, displayTime: February 1, 2012 at 1:47 AM, deleteclass: item-control blog-admin pid-431904879, id: 4429659864278541103, body: GNU General Public License, timestamp: 1328153498250, permalink:?showComment0751328153498250c4429659864278541103, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: February 1, 2012 at 10:31 PM, deleteclass: item-control blog-admin pid-1014594234, id: 4822920817288180852, body: Can I utilize it under Apache or MIT?, timestamp: 1328311565464, permalink:?showComment0751328311565464c4822920817288180852, author: name: Anonymous, profileUrl:, displayTime: February 3, 2012 at 6:26 PM, deleteclass: item-control blog-admin pid-431904879, id: 4943431999226847355, body: Please do as you want and if you discover a strategy to use this code inside your project of any type and enhance it, it could well be nice whenever you can share several of that with the future prospect of this web site.74br/7674br/76Good luck!, timestamp: 1328370190383, permalink:?showComment0751328370190383c4943431999226847355, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: February 4, 2012 at 10:43 AM, deleteclass: item-control blog-admin pid-1014594234, id: 5836125009628503063, body: This is an outstanding tutorial, really good stuff. And many thanks for sharing this with, timestamp: 1328538938117, permalink:?showComment0751328538938117c5836125009628503063, author: name: Alfi, profileUrl:, displayTime: February 6, 2012 at 9:35 AM, deleteclass: item-control blog-admin pid-747142905, id: 6314585033929502024, body: outstanding tutorial, Thnk you vry much., timestamp: 1329203558654, permalink:?showComment0751329203558654c6314585033929502024, author: name: ishrat, profileUrl: /profile/05217055810312997382, displayTime: February 14, 2012 at 2:12 AM, deleteclass: item-control blog-admin pid-1009004495, id: 4345964499247852855, body: I wanted to get a line but this really is the result.74br /image/eq7j4baqt/74br/7674br/76any suggestions?, timestamp: 1329418950915, permalink:?showComment0751329418950915c4345964499247852855, author: name: milton, profileUrl:, displayTime: February 16, 2012 at 2:02 PM, deleteclass: item-control blog-admin pid-1956932381, id: 8495878316784379351, body: Milton, 74br/7674br/76Can you please elaborate just a little. What could be the issue here? Is it regarding the look getting take off? This application for signature capture is often a canvas for your to attract anything and save to be a png image., timestamp: 1329446929419, permalink:?showComment0751329446929419c8495878316784379351, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: February 16, 2012 at 9:48 PM, deleteclass: item-control blog-admin pid-1014594234, id: 3657418636118620826, body: Thank you for ones code! I launched appli by 50 % minutes without problems., timestamp: 1329462147465, permalink:?showComment0751329462147465c3657418636118620826, author: name: canu johan, profileUrl:, displayTime: February 17, 2012 at 2:02 AM, deleteclass: item-control blog-admin pid-127128474, id: 3394520612244966283, body: Hi! The problem is by making a figure, lines are going In the picture I uploaded, I just did a horizontal line nevertheless the result was another., timestamp: 1329475325905, permalink:?showComment0751329475325905c3394520612244966283, author: name: milton, profileUrl:, displayTime: February 17, 2012 at 5:42 AM, deleteclass: item-control blog-admin pid-74390214, id: 8862811152147925941, body: Milton, 74br/7674br/76Not sure how that4639;s happening. If you could supply the link to your source code could possibly be I can find something., timestamp: 1329792550503, permalink:?showComment0751329792550503c8862811152147925941, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: February 20, 2012 at 9:49 PM, deleteclass: item-control blog-admin pid-1014594234, id: 8493740202100931165, body: Hey Nice a image has been saved plz can u can I save a picture with my own, personal unique Image Name? Like u have given image through which yourName contains the text:BetterThanZero and signature is It cn u plz assist me to in coding to save lots of IT works using the Name BetterThanZero.74br/76Thanks and Regards, timestamp: 1330683590923, permalink:?showComment0751330683590923c8493740202100931165, author: name: !ZZZ, profileUrl: /profile/17977886219738086507, displayTime: March 2, 2012 at 5:19 AM, deleteclass: item-control blog-admin pid-365993571, id: 3249248663901430632, body: The following lines produce the filename. Here I am building a unique filename using current starting time and date. Change it in accordance with your 74br/7674br/7674b7674br/76uniqueId 75 getTodaysDate 46quot;46quot; getCurrentTime 46quot;46quot; ;74br/76 current 75 uniqueId 46quot;;74br/76 mypath75 new Filedirectory, current;74/b076, timestamp: 1330739768524, permalink:?showComment0751330739768524c3249248663901430632, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: March 2, 2012 at 8:56 PM, deleteclass: item-control blog-admin pid-1014594234, id: 2111123980383548455, body: Hi, many thanks your tutorial.74br/76I have test in my deviceHTC 2.3.3, but inside the 4639;GetSignature4639; folder, there's empty file. The signature didn4639;t save. Why this happen.74br/76My project run as android 2.2 API 8., timestamp: 1331174481458, permalink:?showComment0751331174481458c2111123980383548455, author: name: Unknown, profileUrl: /profile/04654050354359630231, displayTime: March 7, 2012 at 9:41 PM, deleteclass: item-control blog-admin pid-114340053, id: 3813579126373345726, body: ok, thanks, I have change 4639;mypath4639;, timestamp: 1331178603445, permalink:?showComment0751331178603445c3813579126373345726, author: name: Unknown, profileUrl: /profile/04654050354359630231, displayTime: March 7, 2012 at 10:50 PM, deleteclass: item-control blog-admin pid-114340053, id: 400850940053048646, body: Super Thanks!!!, timestamp: 1331194803835, permalink:?showComment0751331194803835c400850940053048646, author: name: Anonymous, profileUrl:, displayTime: March 8, 2012 at 3:20 AM, deleteclass: item-control blog-admin pid-14653842, id: 6855241712820213334, body: Hi, im a new comer to android. 74br/76I seek to copy the code provided above in to the eclipse nevertheless it keep showing me with all the error R cannot resolved to some variable.74br/76Why is happening? may help?, timestamp: 1331807472962, permalink:?showComment0751331807472962c6855241712820213334, author: name: Noobie, profileUrl:, displayTime: March 15, 2012 at 6:31 AM, deleteclass: item-control blog-admin pid-274478114, id: 1569304655984156445, body: in the event you used ctrl-shift-o then eclipse may have added import android.R 74br/7674br/76I removed this plus the code worked., timestamp: 1336007014601, permalink:?showComment0751336007014601c1569304655984156445, author: name: Anonymous, profileUrl:, displayTime: May 2, 2012 at 9:03 PM, deleteclass: item-control blog-admin pid-1865306042, id: 2608105605573848520, body: Is there a means to set experience image?, timestamp: 1336016813103, permalink:?showComment0751336016813103c2608105605573848520, author: name: Anonymous, profileUrl:, displayTime: May 2, 2012 at 11:46 PM, deleteclass: item-control blog-admin pid-1865306042, id: 7662914816410677475, body: 74b76You can set the setting color74/b7674br/76 ;, timestamp: 1336104934606, permalink:?showComment0751336104934606c7662914816410677475, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: May 4, 2012 at 12:15 AM, deleteclass: item-control blog-admin pid-1014594234, id: 5016980406713105437, body: Hi, 74br/7674br/76Great blog with excellent posts and code.74br/7674br/76I4639;ve used this to convert my 46quot;signature46quot; to Base64 but it4639;s cutting the whole picture before the end.74br/7674br/76FileInputStream mFileInputStream 75 new FileInputStreammypath;74br/76ByteArrayOutputStream bos 75 new ByteArrayOutputStream;74br/76byte b 75 new byte1024;74br/76int bytesRead 75 0;74br/76while bytesRead 75 b!75 - 1 74br b, 0, bytesRead;74br/7674br/76byte ba 75 ;74br/76String ba;74br/7674br/76Can you inform me why or how can I solve the situation?, timestamp: 1337699134859, permalink:?showComment0751337699134859c5016980406713105437, author: name: Luis Neves, profileUrl: /profile/17582792592101933741, displayTime: May 22, 2012 at 11:05 AM, deleteclass: item-control blog-admin pid-493696751, id: 8769945430622503630, body: It has not even attempt to do with base64 conversion. I vaguely remember it should do with this brand of code74br/7674br/76mBitmap 75 , , 565;;74br/7674br/76Try enhancing the size here. It has to suit the canvas size inside view for complete image., timestamp: 1337729818244, permalink:?showComment0751337729818244c8769945430622503630, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: May 22, 2012 at 7:36 PM, deleteclass: item-control blog-admin pid-1014594234, id: 5990107336584839287, body: I ran the code on emulator and yes it created a file from the folder:74br instead of the folder/mnt/sdcard/GetSignature 74br/76It also come up with jpg image from the/mnt/sdcard/DCIM/Camera folder. Please advice.74br/76Thank you., timestamp: 1337964660029, permalink:?showComment0751337964660029c5990107336584839287, author: name: Sumit Kumar, profileUrl: /profile/01335281352397109176, displayTime: May 25, 2012 at 12:51 PM, deleteclass: item-control blog-admin pid-196916114, id: 5087682549445197218, body: I love this application but my only issue is I need to keep file to/data/data/packagename/files. I do not provide an sd card and are testing it over a tablet which will not either. I have searched the online world and have discovered nothing that could aid me speficially concerning where and what I am designed to put to store it ordinary directory. Thanks!, timestamp: 1339017154919, permalink:?showComment0751339017154919c5087682549445197218, author: name: Theresa, profileUrl: /profile/10869115175712433784, displayTime: June 6, 2012 at 5:12 PM, deleteclass: item-control blog-admin pid-183321777, id: 8433774253410448733, body: This application saves the signature to your Android Internal Storage despite the fact that there are some references on the External Storage inside the sample program. Some lines are redundant within, hope it clears any more confusion with the, timestamp: 1339126281036, permalink:?showComment0751339126281036c8433774253410448733, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: June 7, 2012 at 11:31 PM, deleteclass: item-control blog-admin pid-1014594234, id: 5523706836258558474, body: hi iam gettinga problem such as this.:74br/76getsignature empty folder is creating74br/76in sdcard. signature is just not savingpng image will not be savingin the folder74br/76in logcat its showing this way:74br/07606-11 12:23:38.085: W/WindowManager74: Failure taking screenshot for 230x135 to layer 2101074br/76please help me74br/76 Thanks, timestamp: 1339398207059, permalink:?showComment0751339398207059c5523706836258558474, author: name: madhu, profileUrl: /profile/02479790306991475131, displayTime: June 11, 2012 at 3:03 AM, deleteclass: item-control blog-admin pid-1591024060, id: 1450974650149607070, body: I ran the code on emulator and it also created a file from the folder:74br instead of the folder/mnt/sdcard/GetSignature74br/76It also came up with the jpg image within the/mnt/sdcard/DCIM/Camera folder. Please advice.74br/76Thank you., timestamp: 1340780511426, permalink:?showComment0751340780511426c1450974650149607070, author: name: Nagarjuna Avula, profileUrl: /profile/02270635690107695815, displayTime: June 27, 2012 at 3:01 AM, deleteclass: item-control blog-admin pid-604864079, id: 6797271032693002647, body: is fine. Not sure how it designed a Jpeg in Camera Folder. The folder in/mnt/sdcard/GetSignature can be okay as I previously mentioned that I started with External Storage and converted to Internal Storage and left several of the code within., timestamp: 1340934340336, permalink:?showComment0751340934340336c6797271032693002647, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: June 28, 2012 at 9:45 PM, deleteclass: item-control blog-admin pid-1014594234, id: 3386547385909725842, body: I used your script to avoid wasting the signature to SQLite using Base64. Now I need some guidance to load/present/show over a canvas the saved signature?74br/7674br/76Your help will likely be appreciated74br/7674br/76Regards, timestamp: 1341315251148, permalink:?showComment0751341315251148c3386547385909725842, author: name: Zacarias, profileUrl:, displayTime: July 3, 2012 at 7:34 AM, deleteclass: item-control blog-admin pid-171968851, id: 4102060350223717432, body: Added a portion for displaying a Base64 string back as image, this can be the signature in this instance., timestamp: 1341419174725, permalink:?showComment0751341419174725c4102060350223717432, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: July 4, 2012 at 12:26 PM, deleteclass: item-control blog-admin pid-1014594234, id: 2081639885980873360, body: Application is perfect but I got an oversight that 46quot;Failed to insert image46quot; when application rich at line String url 75 74br/76Please anyone deliver suggestion., timestamp: 1341926367212, permalink:?showComment0751341926367212c2081639885980873360, author: name: Unknown, profileUrl: /profile/15879802915816163686, displayTime: July 10, 2012 at 9:19 AM, deleteclass: item-control blog-admin pid-1771054245, id: 4028810923437284260, body: this really is very good app that we have to beneficial and others., timestamp: 1342157911237, permalink:?showComment0751342157911237c4028810923437284260, author: name: dipali, profileUrl: /profile/13442661939613813517, displayTime: July 13, 2012 at 1:38 AM, deleteclass: item-control blog-admin pid-1542638006, id: 6031349161457467328, body: Thank you for the many work and excellent coverage over a pretty complex challenge. Great job!, timestamp: 1343513284224, permalink:?showComment0751343513284224c6031349161457467328, author: name: BRoy, profileUrl: /profile/14256801366991010995, displayTime: July 28, 2012 at 6:08 PM, deleteclass: item-control blog-admin pid-1587596306, id: 4375935146684516774, body: I really found this web site very useful.I was able run the application form.: 74br/7674br/76But i was not capable of retrieve the whole picture which has saved making use of your code!What must i do?Can you just figure out what should we've to compensate for 46quot;myStringImage46quot;?, timestamp: 1346826724938, permalink:?showComment0751346826724938c4375935146684516774, author: name: Anonymous, profileUrl:, displayTime: September 5, 2012 at 2:32 AM, deleteclass: item-control blog-admin pid-1208943094, id: 5902620597708554222, body: Good i set an identification image with the signature part, then how to 4639;save and retrieve4639;the picture?background image the signature?, timestamp: 1346829710805, permalink:?showComment0751346829710805c5902620597708554222, author: name: Anonymous, profileUrl:, displayTime: September 5, 2012 at 3:21 AM, deleteclass: item-control blog-admin pid-1208943094, id: 4182524013084158273, body: the best way to put dot while doing signature on this application? if any knows the solution please help , timestamp: 1347251546256, permalink:?showComment0751347251546256c4182524013084158273, author: name: Vishwanath Ragha, profileUrl: /profile/08831815673232752989, displayTime: September 10, 2012 at 12:32 AM, deleteclass: item-control blog-admin pid-1740926724, id: 5312363060421408968, parentId: 3813579126373345726, body: I have exactly the same issue. Can u inform us what path you could have., timestamp: 1348604480228, permalink:?showComment0751348604480228c5312363060421408968, author: name: Anonymous, profileUrl:, displayTime: September 25, 2012 at 4:21 PM, deleteclass: item-control blog-admin pid-2046271553, id: 2000685286351966308, body: Hi BetterthanZero.74br/7674br/76This isa excellent code. All will be well but I am not seeing captured signature from the folder. Folder is empty. What path should I mention from the code to determine signature image from the phone. I have g2x phone, timestamp: 1348604894768, permalink:?showComment0751348604894768c2000685286351966308, author: name: Anonymous, profileUrl:, displayTime: September 25, 2012 at 4:28 PM, deleteclass: item-control blog-admin pid-2046271553, id: 3558794621744256636, parentId: 2000685286351966308, body: This example saves the signature within the Internal Storage with the application. Please take a look out 74a 42 rel7542nofollow4276Android Internal and External storage example - Store and Retrieve Data74/a076, timestamp: 1348625171185, permalink:?showComment0751348625171185c3558794621744256636, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: September 25, 2012 at 10:06 PM, deleteclass: item-control blog-admin pid-1014594234, id: 6080091601431314021, parentId: 2000685286351966308, body: Thank you much!, timestamp: 1348632333639, permalink:?showComment0751348632333639c6080091601431314021, author: name: Anonymous, profileUrl:, displayTime: September 26, 2012 at 12:05 AM, deleteclass: item-control blog-admin pid-46225277, id: 7538698637533998567, body: When I am running this my get deleted while cleaning and file get deleted the way to resolve this issues., timestamp: 1351459234934, permalink:?showComment0751351459234934c7538698637533998567, author: name: Sanghati Mukherjee, profileUrl: /profile/15142805042224315394, displayTime: October 28, 2012 at 5:20 PM, deleteclass: item-control blog-admin pid-43404564, id: 4202475094829787235, body: we are using android 2.2, can it be work for 2.2?, timestamp: 1352176751027, permalink:?showComment0751352176751027c4202475094829787235, author: name: babu, profileUrl: /profile/06460707654642269418, displayTime: November 5, 2012 at 11:39 PM, deleteclass: item-control blog-admin pid-652392931, id: 6778011652608680482, parentId: 4202475094829787235, body: it4639;s implementing 2.2 just i changed min sdk to 8, timestamp: 1352200166479, permalink:?showComment0751352200166479c6778011652608680482, author: name: babu, profileUrl: /profile/06460707654642269418, displayTime: November 6, 2012 at 6:09 AM, deleteclass: item-control blog-admin pid-652392931, id: 6477695598174602058, body: Hi, 74br/76i dont wish to store images in DCIM/Camera.74br/76How to restrict this? please let me to solve this problem, timestamp: 1352200350649, permalink:?showComment0751352200350649c6477695598174602058, author: name: babu, profileUrl: /profile/06460707654642269418, displayTime: November 6, 2012 at 6:12 AM, deleteclass: item-control blog-admin pid-652392931, id: 5309600972713513676, parentId: 4182524013084158273, body: case MOVE:74br/76 74br/76 case UP:74br/76 iflastTouchX7575eventX 46amp;46amp; lastTouchY7575eventY 46amp;46amp; UP//caso del punto74br/76 eventX, eventY, 1, ;74br/76 74br/7674br/76add this 46quot;if46quot; about the code, timestamp: 1352811483741, permalink:?showComment0751352811483741c5309600972713513676, author: name: Anonymous, profileUrl:, displayTime: November 13, 2012 at 7:58 AM, deleteclass: item-control blog-admin pid-2013017527, id: 2783537061721095449, body: Thanks a lot, timestamp: 1353402281724, permalink:?showComment0751353402281724c2783537061721095449, author: name: Hemant Kumar, profileUrl: /profile/10779051583156252075, displayTime: November 20, 2012 at 4:04 AM, deleteclass: item-control blog-admin pid-775127838, id: 1482590013629166238, body: I got a mistake that 46quot;Failed to insert image46quot; when application rich at line String url 75 74br/76Please aid me to solve this, timestamp: 1354726555804, permalink:?showComment0751354726555804c1482590013629166238, author: name: Anonymous, profileUrl:, displayTime: December 5, 2012 at 11:55 AM, deleteclass: item-control blog-admin pid-2031170788, id: 6760140586139876127, body: I forgot to convey that is logtag url:null., timestamp: 1354726917919, permalink:?showComment0751354726917919c6760140586139876127, author: name: Anonymous, profileUrl:, displayTime: December 5, 2012 at 12:01 PM, deleteclass: item-control blog-admin pid-2031170788, id: 440701286709605567, parentId: 6760140586139876127, body: Comment those 2 lines out. Its already writing to your file. That4639;s for the look to show up from the media library and you'll not be doing that for just a signature., timestamp: 1354763373767, permalink:?showComment0751354763373767c440701286709605567, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: December 5, 2012 at 10:09 PM, deleteclass: item-control blog-admin pid-1014594234, id: 1634325462631242934, parentId: 6760140586139876127, body: Thank you a great deal!, timestamp: 1354798597997, permalink:?showComment0751354798597997c1634325462631242934, author: name: Anonymous, profileUrl:, displayTime: December 6, 2012 at 7:56 AM, deleteclass: item-control blog-admin pid-2136887541, id: 8554624404136258010, body: can anyonw send me this project., timestamp: 1354865805058, permalink:?showComment0751354865805058c8554624404136258010, author: name: Muddineni Sampath, profileUrl: /profile/14487865171946704709, displayTime: December 7, 2012 at 2:36 AM, deleteclass: item-control blog-admin pid-285484220, id: 7135235635317322968, body: BetterThanZero, 74br/7674br/76Great instructional code! It has already helped immeasurably. I have aquestion I was wondering in the event you could quickly answer:74br/7674br/76If the filename for any signature file is well known, the way you would you initially open the file and display the contents?74br/7674br/76Thank you!74br/7674br/076, timestamp: 1355501704690, permalink:?showComment0751355501704690c7135235635317322968, author: name: Al, profileUrl: /profile/09496845656217919606, displayTime: December 14, 2012 at 11:15 AM, deleteclass: item-control blog-admin pid-1965934367, id: 8092880047760271177, parentId: 7135235635317322968, body: I forgot to say that possibly the code could either reside from the signature constructor or exist being a public method within the signature class., timestamp: 1355501894066, permalink:?showComment0751355501894066c8092880047760271177, author: name: Al, profileUrl: /profile/09496845656217919606, displayTime: December 14, 2012 at 11:18 AM, deleteclass: item-control blog-admin pid-1965934367, id: 4182127118170383471, parentId: 7135235635317322968, body: You can display the signature in the ImageView.74br/7674br/76Bitmap image 75 path;74br image;, timestamp: 1355633821936, permalink:?showComment0751355633821936c4182127118170383471, author: name: BetterThanZero, profileUrl: /profile/09171064735901581070, displayTime: December 15, 2012 at 11:57 PM, deleteclass: item-control blog-admin pid-1014594234, id: 8306722870055424432, body: Hmm great tutorial! However I require assistance with something that's the part within the saving as file together with the specified filename current. I ran the applying but the signature will not get stored within the specified directory but rather was saved from the mnt/sdcard/DCIM/Camera folder. Anyone while using same problem?, timestamp: 1355734725843, permalink:?showComment0751355734725843c8306722870055424432, author: name:
For the entire experience, please enable JavaScript with your browser. Thank you!
Find answers quickly. Contact us in the event you need to.
Get started or learn new methods to work.
Post questions and acquire answers from experts.
The latest apps have been in. Great new features in Photoshop, Illustrator and many types of your Creative Cloud favorites. Plus new mobile apps to look at your work to new places. And every asset - including Adobe Stock - on hand. All connected throughout the power of CreativeSync.
Wrong message? Even the right channel can fail when you-re utilizing the wrong message. Adobe Marketing Cloud will help untangle the complexity of cross-channel marketing.
Early Bird pricing for Adobe Summit 2016 ends December 18.
Meet Acrobat DC. The next version of Acrobat has arrived.
The worlds best PDF option is better than ever. Now, its so much easier for you to create, edit and manage PDFs on the desktop. And if you desire to do more, sign up to get mobile apps, online services and e-signing.
Copyright Y 2015 Adobe Systems Incorporated. All rights reserved.
For the entire experience, please enable JavaScript with your browser. Thank you!
Find answers quickly. Contact us should you need to.
Get started or learn new strategies to work.
Post questions and find answers from experts.
Accenture and Adobe Expand Alliance to Advance Digital Transformation for Life Science, Healthcare, and Financial Services Organizations
Adobe Data Shows Top Sellers on Black Friday: Samsung TVs, iPad Air 2, Microsoft XBox, Lego Star Wars, Shopkins Dolls
The latest apps come in. Great new features in Photoshop, Illustrator and all of your Creative Cloud favorites. Plus new mobile apps to adopt your work to new places. And every asset including Adobe Stock on hand. All connected from the power of CreativeSync.
Wrong message? Even the right channel can fail if youre while using the wrong message. Adobe Marketing Cloud might help untangle the complexity of cross-channel marketing.
Adobe Summit 2016 in Las Vegas, March 2024 registration now open.
Meet Acrobat DC. The next version of Acrobat can be used.
The worlds best PDF option would be better than ever. Now, its that much easier for you to create, edit and manage PDFs in your desktop. And if you desire to do more, register for get mobile apps, online services and e-signing.
Copyright 2015 Adobe Systems Incorporated. All rights reserved.
My favourite kitchen is white. Its this is the most timeless look along with the one youd least tire well over the years.
In the countless homes that I will be in over the last decade, well-known giveaway about the age of the property is always your kitchen, and often its the colour from the wood cabinets that defines it even faster.
If I head into a kitchen containing dark brown cabinets, I know it absolutely was installed from the last several years. If its an orangy, ginger coloured, shaker style cabinet, I know that that it was installed within the late 90s early 2000, if your cabinets are oak read on, well you have the picture!
One in the worst mistakes is the place where a homeowner installs an 80s kitchen for example in a very turn-of-the-century character home. Especially those white melamine cabinets with all the strip of oak around the bottom of the door. Please think about the era of your dwelling when you're designing your home!!
The most breathtaking kitchen renovation within a 1905 home that I have seen was designed by Susan Dossetter and Andrew Skurman and featured in House Beautiful magazine. If you could have a house circa 1905, this really is the kitchen that needs to be in it!
The antique oak cabinet, originally made to get a French store, is perfect to get a collector. Susan Dossetter found the reproduction Windsor chairs in Nantucket along the table made to assist the chairs plus the cabinet. The floor is hand-rubbed wide-plank red oak.
Love a combination of glass knobs, chrome faucets and pulls. See this post for additional advice on hardware.
The countertop is made from two 3/4 inch slabs of Calacatta Oro marble glued together, with regard to added thickness, then topped that has a third layer inside back.
The vintage French towel racks, which Susan Dossetter added towards the antique bakers table, are hung with vintage towels that they has collected over many years. The bakers table came having a new sycamore top. Vintage and new cake plates hold treats with the children.
Archive beveled tile gives a clean backdrop with the La Cornue Chateau range, meant to order in burnished stainless-steel and brass. The floor all around the range is protected with hexagon tiles.
The cast-plaster motif about the ceiling is produced by Decorators Supply. The hood on the range was part from the original kitchen. Quilted steel insulation panels, within the Sub-Zero refrigerator, really should be available at any sheet metal shop. The antique butcher block through the island is on casters, so that it can go anywhere its needed. Pot racks from Williams-Sonoma were powder-coated in white.
Here can be a photo of an typical oak kitchen mostly installed with this era of kitchens.
When I am standing in a very kitchen seems very much this way one, and I suggest that this kitchen be painted white or cream the moment the words beyond my mouth the wifes face lights up and also the husband looks horrified with the prospect of painting THE WOOD!
Im undecided why most guys have this reaction okay Ive figured out, and heres the post written after that one but its pretty common.
Men usually everything clearly once they know that its not regarding the wood, its concerning the fact that it is dated. And being clear, I dont advocate painting ALL WOOD, just kitchens with this era.
So for those who are with this kitchen, perusing this right now, theres really one thing you must know: This kitchen IS NEVER COMING BACK. So the only method to extend the life span of it should be to prime it, paint it, and install new hardware. Period, end of conversation.
Heres a before picture of any kitchen I did for any client in West Vancouver with another designer, Jan Romanuk in 2005. This client moved in with all the cabinets already painted however you could still understand the grain on the wood over the paint colour. They also wanted the cabinets higher than the peninsula removed, new lighting, flooring, colours, etc:
Dulux Ivory Fresco, 30YY 81/123 orOC-92 or Cloverdale 7980 because of the updates.
Now that Ive been speaking about colour on your blog for several years, I would NOT specify a white this yellow again above. Especially since the granite countertops arepink beige.
You can see which the countertops have become similar on the first kitchen, even so the white chosen here's actually a greige, not just a white or cream in any respect.
How in regards to the absence of upper cabinets this means you probably have space for the fabulous pantry!
A post on white kitchens would stop complete with no famous, most copied, kitchen from Somethings Gotta Give!
Should you select a gray on your kitchen below? Read this post that may help you decide.
Need help selecting the most appropriate neutral or colour? My How to Choose Paint Colours: Its all from the Undertones ebook takes the a huge selection of choices as a result of ten along together with the list of my other go-to best grays, categorised into 2 undertones, green, blue and purple. The beige undertones of pink, yellow and green along using the best greens and blues.
My bonus book of colours will be worth the price in the ebook alone and you will also get my system of understanding undertones in order to stop making mistakes when sourcing tile, carpet, countertops, etc.
Need help deciding on the best white? My White is Complicated: A Decorators Guide to Choosing the Right White eBookwill aid you in getting your whites right for ones cabinets, trim, ceilings, and walls.This eBook includes my Bonus book of Whites that may take the guesswork from your decisions.
Youll need them both when you have a complete house of whites and neutrals/colours to select, have them here.
To ensure the whites are right as part of your kitchen, find some large samples!
If you would choose to learn to decide on the right colours to your home or on your clients, turn into a True Colour Expert.
After all, one colour choice thats wrong either in the hard finish being a countertop or wall colour could create you upset each time you attractive your new space!
For more tips on planning your home read;
While youre here, sign up for this feed which means you dont pass up!
need to find out where to start?
decisions you must make?
navigate my blog to find the answers you'll need.
Get it ABSOLUTELY FREE, as well as colourful updates
delivered directly to your inbox.
that helps me avoid mistakes Id make on my very own.
What an attractive job in college on that kitchen wish I lived more detailed you so I could hire you for our kitchen update just taking on the wallpaper, painting, and painting the cabinets.
I really wish to paint my 80s kitchen cabinets. Im afraid I will mess them up. I am selling my house as well as the kitchen looks dated. Any tips on the best way to do it right?
Using an oil based primer for your first coat is critical. Then take every one of the doors off that is the time to obtain new hardware as appropriate and lay them out within your garage and either paint them using a brush or get a painter to spray them. Sometimes 3 coats are essential to hide the grain but providing you use a high-quality paint it can look wonderful!
I require assistance fast. Im within the process of remodeling my kitchen and still have the oak cabinets youve pictured except minus the arch around the top with the cabinet. I dont like painted cabinets and white certainly isn't going to work within my home. I have African art and dark wood within an open floor paln. Can I achieve an updated look by refinishing the cabinets instead. I was taking a look at a finish which is half mahogany and half walnut or possibly a golden mahogany color.
I have found which the ONLY approach to update these cabinets should be to paint them. The design and raised panel style in this kitchen is merely dated and its particular not returning.
If white just isn't an option in your case, you may could paint them a gray/green colour, like HC-96 Richmond Gray.
May I ask for the color help. I want a kitchen with white cabinets and white walls. Wood floors and charcoal countertop. Should I use 2 different whites for wall and cabinets? And most importantly what white will you recommend that is certainly soft and warm but one that reads white, not cream or ivory like?
I am beginning to paint my honey colored wood cabinets white in April! I can hardly wait! This post was Providence, I cant wait to indicate it to my better half!
A great colour to use will be OC-1 Natural Wicker from Benjamin Moore. Its soft without reading too yellow.
For the walls, I would paint them a white that may be grayed making sure that you can distinguish between this cabinet colour as well as the wall colour. I would recommend OC-11, Clay Beige.
Wow, thanks soooo much. I am acquainted with both those those shades but I thought theyd never read white.a la the white through the somethings gotta give kitchen. Fascinating.
Well you didnt the Somethings Gotta Give Kitchen. That kitchen looks pretty white for me given the white subway tile. And the walls look as being a creamier white.
If thats what you would like, I would carry out the cabinets, Mountain Peak White OC-121 along with the walls OC-1 Natural Wicker.
Hey there just found your blog within my searches for white kitchen advice.
I just obtained a 1923 tudor, w/original white subway tile all over your home. Right now the cabinets are a gray laminate lovely and Im about to reface them. Was afraid it could be too much white but maybe not!
Do you've got a recommendation in terms of countertop color, or flooring?
Should I go with stark white cabinet, or higher creamy? The subway tiles are 85 yrs old, so theyre not a wonderful white that you just see more recently
I would match the subway tile as close as possible to your kitchen cabinets. So if they're an off-white ensure the white you end up picking is precisely the same. Just bring lots of chips home from your paint store and hold them up next to the tile.
I like hardwood floors in kitchens, however, if that just isn't an option, I would pick a tile that coordinates using the countertop you ultimately choose. Its hard will recommend a colour without seeing your entire home to be a lot relies on what is going on everywhere else, the bathrooms, fireplace, etc.
Hi! love your website! i've got a question regarding this post on white bought cabinets at lowes haven't painted yet whenever we remodeled our kitchen. i need them white and not stark white. we've got dark countertops, tan walls and lightweight wood floor. could you suggest a hue of white with the cabinets and what could look best together with the scheme we've?? i'd really many thanks for advice b/c these cabinets go unpainted b/c i cant make-up my mind!
I would recommend OC-125 Moonlight white for the cabinets. If you compare it to OC-10 Ultra White, you will notice what it seems as if and that it is far from a stark white.
I just discovered your website and website as well as your comments have struck a chord. I have been a Cloud White user for many years. I am from the process of renovating my bathroom, building custom bevelled shaker cabinets to become topped with honed carrera marble countertop and enhanced with crystal knobs. Clearly Cloud White should be to yellow with the cabinets. I are in possession of swatches of Chantilly Lace OC65, Oxford White cc30, and Ultra White cc10. Fixtures are common American Standard creamy white, most a lot like Oxford White. Floor tiles not even chosen, cant afford more marble so will look to get a grey/taupe porcelain tile. Wall may be depending upon tile, Balboa Mist oc27, or Stonington Gray hc170 or Cement Gray 2112-60. Help! My cabinet maker wont start till I provide him a colour!! Any advice can be GREATLY appreciated.
Chantilly lace is going to be perfect. I also that can compare with Stonington Gray to check the veins from the carrera as long as it is the gray one instead of the yellow one.
And I think the tile that you are thinking about on your floor is really a good direction to adopt as well.
Thanks so much to your advice and encouragement Maria! Moral support always welcome
Supports: Windows XP SP2 SP3/2003/2008/Vista SP1 SP2/Windows 7, All 32bitx86/64bitx64
Latest Update: 2009.04.09 V2.6.2.75 Hide the tunnel kind of Adapter in Vista/Windows 7.
Increase the plethora of searcher, supports Windows 7 6.1.7077.0 winmainwin7rc.090404-1255, x86.
Note: V2.6 doesn't contain the Virtual Drive.
For patch automatically, make use of the command line, or download the existing version V2.5.
Switch UI language between Russian, it is going to take effect at next start.
V2.6.2.75, Build 20090409 without Virtual Drive
Open the connection in new window, click Download or even the left big icon to download the file.
V2.5.1.50, Build 20090205 with Virtual Drive
TCP-Z is Patch In Memory, not replace the original file.
If you wish to direct patch file, please try Universal Patch.
Romanian by Misaki-kun StelistCristi;
Swedish by Marshall Mathers;
Russian by Serhii Hlodin, Mixa, Qui Sum;
Greek by Elias Hantzakos.
Latest Update: V1.2.0.12 Build 20090409 UI support Multil language. Polish by PrEzi, thanks!
Increase all the different searcher, supports Windows 7 6.1.7077.0 winmainwin7rc.090404-1255, x86.
Download Link 3: ZIP, 89 KB Click to download
Latest Update: V1.5.0.22, Build 20090409 Support external language file.
Indentify the file continues to be cracked by other patch. nLite
Allow to patch the 32bit files in windowssyswow64.
Download Link 3: ZIP, 81 KB Click to download
V0.8, Build 20090509 In Windows 7 beta version, eliminate the string This copy of Windows will not be genuine.
Test in Windows 7 6.1.7100.0, OK.
V1.0b, Build 20090425 Fix a bug in Thanks godolphinaim!
Download Link 1: zip File, 66 KB